{"_id":"@aliou/pi-utils-settings","_rev":"35-0c9cb3a3551bdc53cdb14001eefbe5ec","name":"@aliou/pi-utils-settings","dist-tags":{"latest":"0.21.0"},"versions":{"0.0.1":{"name":"@aliou/pi-utils-settings","version":"0.0.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.0.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"dist":{"shasum":"397b2dccc8fcd3e553e75b053f1963820e890897","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.0.1.tgz","fileCount":8,"integrity":"sha512-BJlQWIcxplPsSy2HFzUEfC4NtjXtgquK5UYJuRxelUwZucgAxj5mUZEtTgOqlscgbwTiOy9BIH3qdH1DbX5AuQ==","signatures":[{"sig":"MEUCIGVW41rEUTtMpaGC174cuxcu3ZoRgm+gEYWa/nRPnDcpAiEAjbaTrroSRU1Wge+IxVxWZ00o7nML9uEj7UZB4o7m24Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40275},"type":"module","exports":{".":"./index.ts"},"gitHead":"572870412997ec03423e49caf6ee3291b5be97be","private":false,"_npmUser":{"name":"aliou","email":"code+npm@general-dexterity.com"},"repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.6.2","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.0.1_1770205236873_0.30701728820343743","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@aliou/pi-utils-settings","version":"0.1.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.1.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"dist":{"shasum":"e53a8669b23fc5ecbad606623f633aee0f21cc6e","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.1.0.tgz","fileCount":8,"integrity":"sha512-dTlPTB4PSv3VzVIV8A8Bdvir5L4Jt2cvnxC3UD+NDzKjGCsQhL6WCS3gpghXrQI8I8/gHxnYtaKKTuxYH42f1A==","signatures":[{"sig":"MEYCIQCXKRgIoOQRIqgAOnBKu3UoJGRLQ+bKwkp+KmR8kHJ5OQIhAO8NN1G/yr3MkdQ81Ttr86mnA7WYrETvf0coTnp/RW7a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40274},"type":"module","_from":"file:aliou-pi-utils-settings-0.1.0.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/ff79d58036b310ff5c8629903b05c913/aliou-pi-utils-settings-0.1.0.tgz","_integrity":"sha512-dTlPTB4PSv3VzVIV8A8Bdvir5L4Jt2cvnxC3UD+NDzKjGCsQhL6WCS3gpghXrQI8I8/gHxnYtaKKTuxYH42f1A==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.8.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.1.0_1770205789823_0.4348378064734224","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aliou/pi-utils-settings","version":"0.2.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.2.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"dist":{"shasum":"8c411b231d0934abc32e6a25e0d0400c566908a7","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.2.0.tgz","fileCount":8,"integrity":"sha512-far9moyB7zR9Ha9BUedhA/vFV6xTe+INdh4m6dme5LWl1aLtJHY8BIJxVtIO//wv5FZx1RNVzgm9DKSYp8CI7g==","signatures":[{"sig":"MEUCIF4LrqHL8SWWE0BmKhYpq+Z1XnBgtlOoFWKXTBgkUGg4AiEAgpLKKVNiK9LoodAOtOzXMUAIRoPxX4NnM5Rk4PRingk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45223},"type":"module","exports":{".":"./index.ts"},"gitHead":"e5096909930804b96f5496035fba2f1780111f1b","private":false,"_npmUser":{"name":"aliou","email":"code+npm@general-dexterity.com"},"repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.6.2","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.2.0_1770317660450_0.17953077524517203","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aliou/pi-utils-settings","version":"0.2.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.2.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"dist":{"shasum":"e6185444aa3e1980831b5c48ac0bf35f751b9b96","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.2.1.tgz","fileCount":8,"integrity":"sha512-+yJqraBFUUmekA3P6B/nJLIQLetaz9UCsowOaCt35IUZmOar2y2Tg8If+KbTqrwWib9ljsi3F+wQxV8suB9Eww==","signatures":[{"sig":"MEUCIQCbG4WyCCjeLvM2o8j937DNn1b2ytK6Iv/ZjDOPK8HPygIgI3LieUYxXBOSXYzw/7pf0yFC13TSjrDqe4ycX5qbCQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46053},"type":"module","_from":"file:aliou-pi-utils-settings-0.2.1.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/d64d70276a540ac3cf9777c7aaf77150/aliou-pi-utils-settings-0.2.1.tgz","_integrity":"sha512-+yJqraBFUUmekA3P6B/nJLIQLetaz9UCsowOaCt35IUZmOar2y2Tg8If+KbTqrwWib9ljsi3F+wQxV8suB9Eww==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.9.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.2.1_1770472317180_0.4662069537243392","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aliou/pi-utils-settings","version":"0.3.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.3.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"dist":{"shasum":"77610d7661a557393bb950cecf5e47bfcd50d285","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.3.0.tgz","fileCount":10,"integrity":"sha512-zhXKoKOgD+zIDViTeo1IxDcgvSwtDM4lGxAoFBk+89rlLpGTNtcVwEQ1d4J2bt/HKJM3KsEWOU7CM/qVDCo2Gw==","signatures":[{"sig":"MEYCIQDM6gJWleX92jdi9Q/lf+H5WMrnd83ypvLiMz6Fxj/zBAIhAOLhXIwaWeS8erSqsZNC8DBzaYgv6E7d42yrWQBLFhZW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":64110},"type":"module","_from":"file:aliou-pi-utils-settings-0.3.0.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/db3bc54f9ff45e4b0e4a49c30373bb1d/aliou-pi-utils-settings-0.3.0.tgz","_integrity":"sha512-zhXKoKOgD+zIDViTeo1IxDcgvSwtDM4lGxAoFBk+89rlLpGTNtcVwEQ1d4J2bt/HKJM3KsEWOU7CM/qVDCo2Gw==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.9.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.3.0_1770819484259_0.6941537123548633","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aliou/pi-utils-settings","version":"0.4.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.4.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"dist":{"shasum":"d0164836742ae0bb5f78072379edf1989eefc75a","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.4.0.tgz","fileCount":10,"integrity":"sha512-2bzgR7fcHhQlzmHaCa5XnQtMrDf/fLiLyE+Rm4k7ncvHRRwNjB98SsE6WolA40iLjP0oAkGxVlSS6DYcvEMiPQ==","signatures":[{"sig":"MEUCIH1n6u6rgH4SxDgL8EmuP78H4iMDU+Fu3mrTMUFPqdhFAiEAyAGzvghkknPenzxNVqJmvUWZSwFBX5jNxcvZ/oTnD/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":64171},"type":"module","_from":"file:aliou-pi-utils-settings-0.4.0.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/1732f46b85179e26ab278b8941bd41e8/aliou-pi-utils-settings-0.4.0.tgz","_integrity":"sha512-2bzgR7fcHhQlzmHaCa5XnQtMrDf/fLiLyE+Rm4k7ncvHRRwNjB98SsE6WolA40iLjP0oAkGxVlSS6DYcvEMiPQ==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.10.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.4.0_1771351287135_0.7775248521427753","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@aliou/pi-utils-settings","version":"0.5.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.5.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"7788f25dd7c4eb444598a1b8e3649848f4087833","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.5.0.tgz","fileCount":16,"integrity":"sha512-QYubT57LJADUOvjb8yso3jX4UOg73lpd3X8hOj2ZdPCaOkTKNVe+2rRR5Isqk0FZZ6CqDQOjW+7nAhDHyZLHTw==","signatures":[{"sig":"MEUCIDRv/lB/5gI4BILEnjT2Fz7KXAZabhPqhk5fxeyoKPcTAiEAqSpegF/67LTjo04Lm0x4LTup+LrCPDSPDrNILV+tuCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103957},"type":"module","_from":"file:aliou-pi-utils-settings-0.5.0.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/c8af172e9b35109b7c112513d671b15a/aliou-pi-utils-settings-0.5.0.tgz","_integrity":"sha512-QYubT57LJADUOvjb8yso3jX4UOg73lpd3X8hOj2ZdPCaOkTKNVe+2rRR5Isqk0FZZ6CqDQOjW+7nAhDHyZLHTw==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.10.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.5.0_1771513454756_0.13314715644768405","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@aliou/pi-utils-settings","version":"0.5.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.5.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"e804eb5e6d3b0e57d7fb669d07965a9b88fd8ec3","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.5.1.tgz","fileCount":16,"integrity":"sha512-Vrfbd6F0yvkITof0YoXEwMJw/JEM+f/oPhLuB/yEEQbkgzjRcpcpBvxknBknoVQS4BirDENvz5+wUHqFshr7UQ==","signatures":[{"sig":"MEYCIQDgNqx3c+O3TmHgFvkUetUbD6zl8Co3/1lJXHgEkPeu1gIhANFro2LPWHcMRi35OLOob+gB3Af3+1tsc/qfFgfWnnky","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104058},"type":"module","_from":"file:aliou-pi-utils-settings-0.5.1.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/721efeb90408afdae2791fbdbb0735ba/aliou-pi-utils-settings-0.5.1.tgz","_integrity":"sha512-Vrfbd6F0yvkITof0YoXEwMJw/JEM+f/oPhLuB/yEEQbkgzjRcpcpBvxknBknoVQS4BirDENvz5+wUHqFshr7UQ==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.10.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.5.1_1771536461079_0.18948486318482116","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@aliou/pi-utils-settings","version":"0.6.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.6.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"d7428b8f125e1ad60c9b955619a5045a6c364f3b","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.6.0.tgz","fileCount":17,"integrity":"sha512-raFMvVlqwWIzCIEIQCZFTYTRUukrC3xa/uHb/Af3WcWwrKk6+qYDAqymXvm7HTWub1H0uDt76XcAOIy/Qt1lXg==","signatures":[{"sig":"MEQCIB2hItY+rNXqM+gq+X82o0w3GHIb6hD1DWixnunN0zcBAiAzBjL3wBPckOlXL50/jHe7tRuBpYco45idBroHJfExwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111576},"type":"module","_from":"file:aliou-pi-utils-settings-0.6.0.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/a6633e8207e54ee2d312c453deb9f50c/aliou-pi-utils-settings-0.6.0.tgz","_integrity":"sha512-raFMvVlqwWIzCIEIQCZFTYTRUukrC3xa/uHb/Af3WcWwrKk6+qYDAqymXvm7HTWub1H0uDt76XcAOIy/Qt1lXg==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.10.1","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.6.0_1771834875591_0.6506466605972492","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@aliou/pi-utils-settings","version":"0.7.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.7.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-extensions#readme","bugs":{"url":"https://github.com/aliou/pi-extensions/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"b80956559a5f1c7c04eefa7e6ac5d176b95b419f","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.7.0.tgz","fileCount":19,"integrity":"sha512-sfnQXkK2QQS2fnmCtK8SrMyq0Fek9iHdUxii5VcSE0IkAm/rqZsUUeORhMVOBNbyG+7hZuVXqmbWmA0Xinb7/w==","signatures":[{"sig":"MEYCIQCfN+LwglAihLLqryinqnqC+imNUKAZNf9Ae3nkWa27ugIhANUwp6YPGeEDxHFCw3iSf5eXXRpBdj+JvAD+rGhskXwc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":145721},"type":"module","_from":"file:aliou-pi-utils-settings-0.7.0.tgz","exports":{".":"./index.ts"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ad2f307f-cd82-4e61-a996-d3fa220aad5a"}},"_resolved":"/tmp/0971e9d57008f43c11cfe712ffe5cff3/aliou-pi-utils-settings-0.7.0.tgz","_integrity":"sha512-sfnQXkK2QQS2fnmCtK8SrMyq0Fek9iHdUxii5VcSE0IkAm/rqZsUUeORhMVOBNbyG+7hZuVXqmbWmA0Xinb7/w==","repository":{"url":"git+https://github.com/aliou/pi-extensions.git","type":"git","directory":"packages/settings"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.7.0_1772464004935_0.6328663366952187","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@aliou/pi-utils-settings","version":"0.7.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.7.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"07509ae436c29aefcf8a21d2b413a8618e01099c","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.7.1.tgz","fileCount":19,"integrity":"sha512-XTNeNk0EpEWDag5oCrMqNA9EK4nclACfcr0hG8qIbweeSasI95Oe1q4vbwYkJhpgPTGqaptZeF/F7DFfjNd3bg==","signatures":[{"sig":"MEUCIF8scUpE+UTQpeXpf1PzLQtze9lJ5d/WUdSgv9XyVWlrAiEAgunOPGRDnLnRr0/MQahwOIz2yH0GlOPMQ8G4aMRBDMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":146269},"type":"module","_from":"file:aliou-pi-utils-settings-0.7.1.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/32ccd7afdae0c73083c305d9e520025e/aliou-pi-utils-settings-0.7.1.tgz","_integrity":"sha512-XTNeNk0EpEWDag5oCrMqNA9EK4nclACfcr0hG8qIbweeSasI95Oe1q4vbwYkJhpgPTGqaptZeF/F7DFfjNd3bg==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.7.1_1772473129888_0.6984884414341266","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@aliou/pi-utils-settings","version":"0.8.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.8.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"327536b1c268ae5903cd33528b676820bbda2450","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.8.0.tgz","fileCount":20,"integrity":"sha512-vyr47nfr1hbxSa22EFXS9im6U6/2xUMxM7UBJg4rut1TnzUG9yItEPTXaKh3SIPnhKagNAdUwSGcqDuMcAotWw==","signatures":[{"sig":"MEQCIFFJ7ZVNZvylGKF5J05FtZwRQnw0mg4K4QEHK4MLji6xAiBG3vpFshyg8AMTGBynm0L6eJWyTEbWppeGK+jx/HEDuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":156170},"type":"module","_from":"file:aliou-pi-utils-settings-0.8.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/7a7328306a84cdb95efa588f0363579e/aliou-pi-utils-settings-0.8.0.tgz","_integrity":"sha512-vyr47nfr1hbxSa22EFXS9im6U6/2xUMxM7UBJg4rut1TnzUG9yItEPTXaKh3SIPnhKagNAdUwSGcqDuMcAotWw==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.8.0_1772635519253_0.8556042964366515","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@aliou/pi-utils-settings","version":"0.9.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.9.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"acc2737529d8be4411d0eb54495d7ef732df388e","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.9.0.tgz","fileCount":24,"integrity":"sha512-xTQF+Cbi5tY3ocaVjVos8nHAFFrfhNuO4iKcrXJs6AKOXOpyDRq4zH2wAKGpAbDYJuUYbzHTAHLnjxS0Rv2LOA==","signatures":[{"sig":"MEUCIGbzqn51TU+Oj9iM73JYCci0nLthrzM7ORZ3wUxmbljSAiEAvdSV0UmaO3MHf44lak/gTjNS5IAjD9BocSp30ks0ITY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":170863},"type":"module","_from":"file:aliou-pi-utils-settings-0.9.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/dbe6ca306e2199ce335f1923ff41557a/aliou-pi-utils-settings-0.9.0.tgz","_integrity":"sha512-xTQF+Cbi5tY3ocaVjVos8nHAFFrfhNuO4iKcrXJs6AKOXOpyDRq4zH2wAKGpAbDYJuUYbzHTAHLnjxS0Rv2LOA==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.9.0_1772702334755_0.9930039015708665","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@aliou/pi-utils-settings","version":"0.10.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.10.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"2bfe7f18bccd9ed67335c5f7c8ca258fae9b909b","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.10.0.tgz","fileCount":24,"integrity":"sha512-sYCITYiv6H7LV6MJW+F5sGEqSavMFL+jLVZB/Z9H+UCsBzfb/2VAzef/GOBrbAD7zDC3jtQk123fILaPCD5tCA==","signatures":[{"sig":"MEUCIQDMuuAEX9AU+Iexf3iuFLmzuXBklBAmyCsXhxB8hpoDVwIgYtXPJ1bp2iWAaEZ57M2jlHwWTmPWrWqRXduAB4/Yxdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":171369},"type":"module","_from":"file:aliou-pi-utils-settings-0.10.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/3f50f3e0b7aa5d8ba19d2f37c2f0c5c8/aliou-pi-utils-settings-0.10.0.tgz","_integrity":"sha512-sYCITYiv6H7LV6MJW+F5sGEqSavMFL+jLVZB/Z9H+UCsBzfb/2VAzef/GOBrbAD7zDC3jtQk123fILaPCD5tCA==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.10.0_1772814995159_0.013795675010184638","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@aliou/pi-utils-settings","version":"0.10.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.10.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"f18e88afb40b4c58db3473bffee4dd6a8018af72","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.10.1.tgz","fileCount":24,"integrity":"sha512-3BkAtQ1vQg7nstXYXOi9wK7ElIc/eOAfAXgmQbpMyOts8XkAzwVvjxsT+A9aMo3oj7JVSOoP+EBP691VNpQXZA==","signatures":[{"sig":"MEUCIQC39tgqUJhCmDj+FqavjnUj0oGY+hWr7d4qQh1T9dMCcAIgSjwa/3pgGCdrjEzoiTmO01VA7i0NFM1oyuxOiHdaeoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":171481},"type":"module","_from":"file:aliou-pi-utils-settings-0.10.1.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/d9b1f2f0410a5396f0c602f976646c24/aliou-pi-utils-settings-0.10.1.tgz","_integrity":"sha512-3BkAtQ1vQg7nstXYXOi9wK7ElIc/eOAfAXgmQbpMyOts8XkAzwVvjxsT+A9aMo3oj7JVSOoP+EBP691VNpQXZA==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.1","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.51.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.10.1_1773848277356_0.4654097635422103","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"@aliou/pi-utils-settings","version":"0.10.2","license":"MIT","_id":"@aliou/pi-utils-settings@0.10.2","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"657f7fa57f257d8ca9aeeeae8704e4e9bd360d6e","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.10.2.tgz","fileCount":24,"integrity":"sha512-Jd5k+WF4/QAzP7rzxJfMMqBkDexQXyYNXGxk9Gu0WePDR/wK5jjMgivh9Beg3mNoY2NgAyNwGPCtYk0XUMPE4g==","signatures":[{"sig":"MEQCIBqdVODSa9L0/sch/Hm9083mCKPLmhqyCmSDWJFkLOwmAiADQf1topxu8HKvoCNcmVFwpzGb+L5zQA1wwDqGg4VmPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":171479},"type":"module","_from":"file:aliou-pi-utils-settings-0.10.2.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/a0016658a2b73cc489882ca1cad7efe9/aliou-pi-utils-settings-0.10.2.tgz","_integrity":"sha512-Jd5k+WF4/QAzP7rzxJfMMqBkDexQXyYNXGxk9Gu0WePDR/wK5jjMgivh9Beg3mNoY2NgAyNwGPCtYk0XUMPE4g==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.12.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":"0.61.0"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.10.2_1774009565025_0.41490548266941163","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"@aliou/pi-utils-settings","version":"0.10.3","license":"MIT","_id":"@aliou/pi-utils-settings@0.10.3","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"09950b9bb5584bd86647dd6af5edd710aa55c494","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.10.3.tgz","fileCount":24,"integrity":"sha512-li9yxAeTn+G3mDlpPOwhj8R1Wqc4zUXxgzA6a2aUjaBrANXUsJnkyJonl5ngGDocyMY0oiBXSg+GCd2sekOVMA==","signatures":[{"sig":"MEYCIQD708dnQnibDf2TpIa4wrIzGpKViP1Rct1Xr/70+OjeYQIhAJsSR+pgtUYUck+JVQOzPjdlL5nNxFKsjYAVcyN00Bvv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.10.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":171484},"type":"module","_from":"file:aliou-pi-utils-settings-0.10.3.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/88838f9620d1193e04c1bf8596410744/aliou-pi-utils-settings-0.10.3.tgz","_integrity":"sha512-li9yxAeTn+G3mDlpPOwhj8R1Wqc4zUXxgzA6a2aUjaBrANXUsJnkyJonl5ngGDocyMY0oiBXSg+GCd2sekOVMA==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.12.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.10.3_1774378845776_0.007432991965123259","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@aliou/pi-utils-settings","version":"0.11.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.11.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"2d7c5729a153dc703c17a60f394cbcfd8b4e5874","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.11.0.tgz","fileCount":25,"integrity":"sha512-ltH76aYvS6BDzmSTJlRhoH/NwULIHml/SIWY5rv12taqhhWzJer4hUdojtw87IUjqTHflPKw3njvl2S86qbpmw==","signatures":[{"sig":"MEUCIEiXBxtlPJrZVkNdWa6PcasgN6Z3TnlVKwiS55/U/WoEAiEAyrLfnF3kJ7AlZvmGY5q9/U186xIbJAUshQoS3848T+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174766},"type":"module","_from":"file:aliou-pi-utils-settings-0.11.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/5b2db92f57e1aa847c7976c7dbd0457f/aliou-pi-utils-settings-0.11.0.tgz","_integrity":"sha512-ltH76aYvS6BDzmSTJlRhoH/NwULIHml/SIWY5rv12taqhhWzJer4hUdojtw87IUjqTHflPKw3njvl2S86qbpmw==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.12.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.11.0_1774460138820_0.21394693459644754","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@aliou/pi-utils-settings","version":"0.11.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.11.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"70621147898ed1f4b7abcf56a35595894b6e1d65","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.11.1.tgz","fileCount":25,"integrity":"sha512-wjYuEExswlMBW/jkYhUWYNP+DD5udJ+FFSD63NEUDVx8Ao+40EhpYyd9TcZs3UBKWeNamNpl2reeSMleB8HhoA==","signatures":[{"sig":"MEYCIQCl+9kh1mI+OZjEW2t0GBQ2ap0xiUar5W8DznmQDIQLZgIhAOgJbbvWtOJ1IM3ICf1l0XjnSlV9o09T9QkR8gMeR6VT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174765},"type":"module","_from":"file:aliou-pi-utils-settings-0.11.1.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/b5a179a2a2d67c2fb90349f41e9c3fe1/aliou-pi-utils-settings-0.11.1.tgz","_integrity":"sha512-wjYuEExswlMBW/jkYhUWYNP+DD5udJ+FFSD63NEUDVx8Ao+40EhpYyd9TcZs3UBKWeNamNpl2reeSMleB8HhoA==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.12.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.11.1_1774538844592_0.8438570457762","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@aliou/pi-utils-settings","version":"0.11.2","license":"MIT","_id":"@aliou/pi-utils-settings@0.11.2","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"8ee4ff7e95a4bbc1820fde696338a67b9c07f47e","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.11.2.tgz","fileCount":25,"integrity":"sha512-9wacnpEnDsjOw9v7j54yu9d6iNWgWapkM8NphTLMoXrFxonDtNiYS3t7Z+g1uSSEibQxrZxpauzJcDsqkEXwEA==","signatures":[{"sig":"MEUCICehi1HCfcG4ppLB4Bfgi/zQ/VIwr6b7MByDqKHmYQRyAiEAudgTV+Cb8/QPd3KGlS9ldSlpjZTAlZyZVFqpNinj5B8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174766},"type":"module","_from":"file:aliou-pi-utils-settings-0.11.2.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/b045d41fd8f8a68eb2fa9aa0d1402128/aliou-pi-utils-settings-0.11.2.tgz","_integrity":"sha512-9wacnpEnDsjOw9v7j54yu9d6iNWgWapkM8NphTLMoXrFxonDtNiYS3t7Z+g1uSSEibQxrZxpauzJcDsqkEXwEA==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.12.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.11.2_1774539073408_0.25353385823570407","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@aliou/pi-utils-settings","version":"0.12.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.12.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"0c631eb0ce0b7a167256f060a2a75e99aebde794","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.12.0.tgz","fileCount":26,"integrity":"sha512-SacN6LLhhfJD9aA0lJGDqm5nuh3d16uYw9e5cybv7mHzrHFACre2s7cltkQTDDDGHOjEwNqYwdeTlGqtcSTVHA==","signatures":[{"sig":"MEYCIQDu3d4YrSKnVSOx/V+c/Wf39YykxeBCAIHv8QJRXewbNgIhAIa1ek3rTqQ/NRK2MrMXs0XNNMNVIyppSNWOLtBhHnkk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188056},"type":"module","_from":"file:aliou-pi-utils-settings-0.12.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/c6743f4b2db6b6fdd8f2f230b020aee0/aliou-pi-utils-settings-0.12.0.tgz","_integrity":"sha512-SacN6LLhhfJD9aA0lJGDqm5nuh3d16uYw9e5cybv7mHzrHFACre2s7cltkQTDDDGHOjEwNqYwdeTlGqtcSTVHA==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.12.1","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.12.0_1774814977989_0.44401564563144724","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@aliou/pi-utils-settings","version":"0.12.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.12.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"d52603cfec5d21a7c037035ab05cd6495c2ca610","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.12.1.tgz","fileCount":26,"integrity":"sha512-zLAhxKuc6gtProFUFbDRCYFbeTAKZIqK9EVFt0HgAhfUxS1MOBf0wN+6STGWBbKcsdBowsM1+hcHtDPjtaNihQ==","signatures":[{"sig":"MEYCIQClWxtEN3WrNzeylvtd0jQWl9bu5DjoLQsRkPHzoAc62gIhAK1DUCmYEn23j88U5rQmh3lTrxFIxqfGLEMKGMPGCxFt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188070},"type":"module","_from":"file:aliou-pi-utils-settings-0.12.1.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/9012c188feec9456c8e0981f09668bbb/aliou-pi-utils-settings-0.12.1.tgz","_integrity":"sha512-zLAhxKuc6gtProFUFbDRCYFbeTAKZIqK9EVFt0HgAhfUxS1MOBf0wN+6STGWBbKcsdBowsM1+hcHtDPjtaNihQ==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.12.1","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.12.1_1775149826673_0.10629372703213136","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@aliou/pi-utils-settings","version":"0.13.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.13.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"3e0ca5fe8872b11275a73537fd20238b223ebc08","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.13.0.tgz","fileCount":27,"integrity":"sha512-oIpmvHUmeu21NIONURly2bRVERzRSVz+y54C+UL/EY7kus59s4tGvLvrjvA5hdkLyjxUvgpySva0CokvijZdSw==","signatures":[{"sig":"MEUCIQDE084AAxDDlc7IpHVfTH11iuXJccO26lwdBs1KiHMSwwIgDjYMwWjJbw+nO1g2mZABiTtYWhiOAOslAwmZrLyHurk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190507},"type":"module","_from":"file:aliou-pi-utils-settings-0.13.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/5e7bd032e7c8d39f89e5a2825c5326ef/aliou-pi-utils-settings-0.13.0.tgz","_integrity":"sha512-oIpmvHUmeu21NIONURly2bRVERzRSVz+y54C+UL/EY7kus59s4tGvLvrjvA5hdkLyjxUvgpySva0CokvijZdSw==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.61.0","@mariozechner/pi-coding-agent":"0.61.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.13.0_1775465046138_0.9027924692475975","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@aliou/pi-utils-settings","version":"0.14.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.14.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"094559e80a6acd990246f42fe4d62543a3c8d33f","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.14.0.tgz","fileCount":28,"integrity":"sha512-7onOu9XJspfkY0k+cAeDOq8acxCSQPqbGkcNYT7BVWUcrOvh9diY8P1jxOZjiXvtI+PxX1a9RhK9qXsi89Q5Jw==","signatures":[{"sig":"MEUCICQxAPQIoxGG5TMvLuvdDF58Vx1DbGYATicFOw2xg6mQAiEAmGV5QZdm6JAZoSpGA780bhD2/3S2ZZkvAHF/I0zVKmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190738},"type":"module","_from":"file:aliou-pi-utils-settings-0.14.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/50638a0450fd0633214428ef9fe0d417/aliou-pi-utils-settings-0.14.0.tgz","_integrity":"sha512-7onOu9XJspfkY0k+cAeDOq8acxCSQPqbGkcNYT7BVWUcrOvh9diY8P1jxOZjiXvtI+PxX1a9RhK9qXsi89Q5Jw==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.3.0","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.67.4","@mariozechner/pi-coding-agent":"0.67.4"},"peerDependencies":{"@aliou/pi-utils-ui":"^0.3.0","@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@aliou/pi-utils-ui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.14.0_1778015686172_0.6520758278079317","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@aliou/pi-utils-settings","version":"0.14.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.14.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"5395c544c2333fc62b15549589d18c61d942e696","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.14.1.tgz","fileCount":28,"integrity":"sha512-6LqFSar22FHQ6PmjIh93AwCylQVZL+IHpMKSjA2Tr8hmuZa52pcyRYiEykgx4DdHHUJdxPwQ9Jmu+VnTd8yckw==","signatures":[{"sig":"MEQCIAZkPGqkoki6dCzr6ALrBegHex7MJ7cuQWLpS3yRR+83AiAJ3euBY/D+GZdCF6YA1Q2eHl8R2TG9D7LM+TCltIcNGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190704},"type":"module","_from":"file:aliou-pi-utils-settings-0.14.1.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/8a1db4a93d811fe55c12588138a6676a/aliou-pi-utils-settings-0.14.1.tgz","_integrity":"sha512-6LqFSar22FHQ6PmjIh93AwCylQVZL+IHpMKSjA2Tr8hmuZa52pcyRYiEykgx4DdHHUJdxPwQ9Jmu+VnTd8yckw==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aliou/pi-utils-ui":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.3.0","@aliou/biome-plugins":"^0.4.0","@mariozechner/pi-tui":"0.67.4","@mariozechner/pi-coding-agent":"0.67.4"},"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.61.0 <1"},"peerDependenciesMeta":{"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.14.1_1778055457552_0.9419060975933005","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@aliou/pi-utils-settings","version":"0.15.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.15.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"67fd6068e235159b7eea1ab44e8513d543d00acf","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.15.0.tgz","fileCount":28,"integrity":"sha512-tjbUN4w7Mi1awDf4cu0kogi0oEYdgklfmjXbVNBAfMxQ/0VNx/3jMkMs+tyyyi2mth06cDWtVX8xnGDyus6u+w==","signatures":[{"sig":"MEUCIC4l32/0Qt+KKrE3bfpkTIWPVAtc0WuUzEFXbFy6/wcQAiEAspPW6lIptkt/P5T33HOtNQZsbcS1A95VtiK9YHhByWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190776},"type":"module","_from":"file:aliou-pi-utils-settings-0.15.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/84bd78b907e30e7337168111c6c5fc8f/aliou-pi-utils-settings-0.15.0.tgz","_integrity":"sha512-tjbUN4w7Mi1awDf4cu0kogi0oEYdgklfmjXbVNBAfMxQ/0VNx/3jMkMs+tyyyi2mth06cDWtVX8xnGDyus6u+w==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aliou/pi-utils-ui":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.4.0","@aliou/biome-plugins":"^0.4.0","@earendil-works/pi-tui":"0.74.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.15.0_1778171746309_0.8465865270498398","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@aliou/pi-utils-settings","version":"0.15.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.15.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"517cff1f3148046b7a2539de9d3c9271612e0858","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.15.1.tgz","fileCount":28,"integrity":"sha512-oECJ4c/BaYQvzMKHVuNg2HJOd9Fh4+mWglKOqeDfu8mu28VYpJqMrAOqgOh3XWPTb2cPWzlavPEjFZ2FzUBBQg==","signatures":[{"sig":"MEUCIQDWYX4EY4T9oAPtQyzXCrbqHvXZKlVlV356V6ono9wUKAIgOs9jVo4WQjeqWTg5DtweR8VsDlw0I40SyKHCrRIkL90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190949},"type":"module","_from":"file:aliou-pi-utils-settings-0.15.1.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/2ac76cf4c73e48f05388466dde6c499d/aliou-pi-utils-settings-0.15.1.tgz","_integrity":"sha512-oECJ4c/BaYQvzMKHVuNg2HJOd9Fh4+mWglKOqeDfu8mu28VYpJqMrAOqgOh3XWPTb2cPWzlavPEjFZ2FzUBBQg==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aliou/pi-utils-ui":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.3","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.4.1","@aliou/biome-plugins":"^0.4.0","@earendil-works/pi-tui":"0.74.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.15.1_1778174009069_0.1045066234373091","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@aliou/pi-utils-settings","version":"0.16.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.16.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"eefa1ed85d64799fcce6a02f5b167499cf32cedb","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.16.0.tgz","fileCount":23,"integrity":"sha512-mVhwtt7dKMJKK/QM66Gx2tJlN2CfLB7DXDE4ClWVT2DXENmiRyO2ptb0uY7pTJod+57CdfpGdq2NXpoaDrf2Ww==","signatures":[{"sig":"MEUCIAmQl7gyj7Ej0T7gLazyPmI3OwTp4HWeE6iWgEQFgM3vAiEAjXWuzTN4wo0lEsFubrt52QaWtWRjhtyJISqKXX6r7pE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":173812},"type":"module","_from":"file:aliou-pi-utils-settings-0.16.0.tgz","exports":{".":"./index.ts"},"private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:55f7c3a9-e34a-4ac9-89ed-b32e558e6d61"}},"_resolved":"/tmp/1f17cac62464f07ee540dd8392afd508/aliou-pi-utils-settings-0.16.0.tgz","_integrity":"sha512-mVhwtt7dKMJKK/QM66Gx2tJlN2CfLB7DXDE4ClWVT2DXENmiRyO2ptb0uY7pTJod+57CdfpGdq2NXpoaDrf2Ww==","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aliou/pi-utils-ui":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.4.1","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.16.0_1780318884763_0.13105325320351047","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@aliou/pi-utils-settings","version":"0.17.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.17.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"e04665e3ad677717b1ace7081889f05737f101b1","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.17.0.tgz","fileCount":23,"integrity":"sha512-9HEowgN/qrRnXVtNpAHSkJdeid++C0JPNv8Z0R//uI5xMsWhDWDQtR6RJbRF0rNS1dvaw2FnjK7bX6bDdxuwzA==","signatures":[{"sig":"MEQCIFOmt/ca8SPBWyj9JZ+hDc0IijGhRgeq08an2DZdmoZ3AiBmC+GIEImU6QPN8Cx4vYTmI62CdoiMLx64aDou2sUOug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186063},"type":"module","exports":{".":"./src/index.ts"},"gitHead":"cb6da64553c246cf2bd97646d7507f6d595b728d","private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"aliou","email":"code+npm@general-dexterity.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6056eab7-4e70-499b-915b-1994b703294b"}},"repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.16.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aliou/pi-utils-ui":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.1","devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.4.1","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.17.0_1781114793966_0.7116291358865878","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@aliou/pi-utils-settings","version":"0.18.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.18.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"dist":{"shasum":"a753d4cd2b86d0b4cc76b8ffa07a99729de887f3","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.18.0.tgz","fileCount":23,"integrity":"sha512-ct3Jt9Q7yyv1pHLQLlNrrFqNp6zvxC9nxjN8ak68ZIEfjMlK4tcdvlFxoAqv7yO7VLNFSgS7Us9ICKriK605lQ==","signatures":[{"sig":"MEUCIHOE9wSpV+WpGk+RJXm9K/vsCzBy1WqL8ovgP6LqZNM8AiEAkSY0C8yuKUuzrYyoDsiCq/xvaQXPthHW3oAHiMgD5NQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":199373},"type":"module","exports":{".":"./src/index.ts"},"gitHead":"5dd869046d9b286e3493e9edc6ad036aa42ca499","private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"aliou","email":"code+npm@general-dexterity.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6056eab7-4e70-499b-915b-1994b703294b"}},"repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"11.17.0","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aliou/pi-utils-ui":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.1","devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.4.1","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.18.0_1782040353223_0.6799240411850214","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@aliou/pi-utils-settings","version":"0.19.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.19.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"bin":{"pi-settings-schema":"bin/pi-settings-schema.mjs"},"dist":{"shasum":"c52baf1e1e8e8dc144500bb4ddf2059a8ced6234","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.19.0.tgz","fileCount":26,"integrity":"sha512-i5pdo0QWR6u/e8zBNck2OVW+DBj7AJgy6Hyysl5c03dbcN90W0ybhco9EHZT7yXnA5ZHPdwsnKBzRmGnzVOd6Q==","signatures":[{"sig":"MEUCIG94+nSatnWSTsdKal9O3aRlPBN8eLs8fTO8nvJ9AceQAiEAhe3JGCM2dL0VfXyMEuaiBq0bpJiMMCq6XTan3O/whaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":220397},"type":"module","exports":{".":"./src/index.ts"},"gitHead":"c9e478064af12eba6391e7849c0bfee78b848508","private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"aliou","email":"code+npm@general-dexterity.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6056eab7-4e70-499b-915b-1994b703294b"}},"repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"12.0.2","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aliou/pi-utils-ui":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.1","devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.4.1","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","ts-json-schema-generator":"^2.4.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"ts-json-schema-generator":">=2.4.0 <3","@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"ts-json-schema-generator":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.19.0_1785910679124_0.08330226257871276","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"@aliou/pi-utils-settings","version":"0.19.1","license":"MIT","_id":"@aliou/pi-utils-settings@0.19.1","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"bin":{"pi-settings-schema":"bin/pi-settings-schema.mjs"},"dist":{"shasum":"34f1ae646157f0718bcc7ca116c2a9b4ac31baee","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.19.1.tgz","fileCount":26,"integrity":"sha512-bAx2v1GSiqhj+Z9eU+Ixn1NJDVRp6e/h8bBFcWrKl6CnfbD1AfFgT/I4nNOzwZy0VgxnZLAqPFHbV184Ii9vaw==","signatures":[{"sig":"MEYCIQCDifboyBMu6z+KTDe7JRYt6Y27W0M/fIkmFIhbavwfgwIhALwvWhSCRC0Nl9fGw+B+CAK4wSdZKQkSObpHhLOiOQFq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":227707},"type":"module","exports":{".":"./src/index.ts"},"gitHead":"0c3b0903112a0d6df9f24502675274ed12f89a1d","private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"aliou","email":"code+npm@general-dexterity.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6056eab7-4e70-499b-915b-1994b703294b"}},"repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"12.0.2","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aliou/pi-utils-ui":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.1","devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.4.1","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","ts-json-schema-generator":"^2.4.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"ts-json-schema-generator":">=2.4.0 <3","@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"ts-json-schema-generator":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.19.1_1785935970286_0.10603363595299009","host":"s3://npm-registry-packages-npm-production"}},"0.19.2":{"name":"@aliou/pi-utils-settings","version":"0.19.2","license":"MIT","_id":"@aliou/pi-utils-settings@0.19.2","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"bin":{"pi-settings-schema":"bin/pi-settings-schema.mjs"},"dist":{"shasum":"2a676b44c40df4487441f6127cac6ffa6c0c4750","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.19.2.tgz","fileCount":26,"integrity":"sha512-eN8FrLTPvSqsuvHT3fuM3jNbPm974bcGUbp00BaM68BeW1qRmZBtfrOA/03fFeoF1jyIE1rkMWXywUo+pkpHIg==","signatures":[{"sig":"MEQCIAEwbisP5jMczXfd/5CcXIwsoSx+Qh+egUwR4uFiQEFkAiAocShuAFST5B0g61E/4LlMQRNqLkK1betLulqNFpqSrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.19.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":227707},"type":"module","exports":{".":"./src/index.ts"},"gitHead":"00261366777a41505b77b9c566c01c63fe30a459","private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"aliou","email":"code+npm@general-dexterity.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6056eab7-4e70-499b-915b-1994b703294b"}},"repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"12.0.2","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@aliou/pi-utils-ui":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.1","devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.5.0","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","ts-json-schema-generator":"^2.4.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"ts-json-schema-generator":">=2.4.0 <3","@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"ts-json-schema-generator":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.19.2_1786899791606_0.4890985692774825","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@aliou/pi-utils-settings","version":"0.20.0","license":"MIT","_id":"@aliou/pi-utils-settings@0.20.0","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"homepage":"https://github.com/aliou/pi-utils-settings#readme","bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"pi":{"skills":["skills"]},"bin":{"pi-settings-schema":"bin/pi-settings-schema.mjs"},"dist":{"shasum":"142dd48841b40409e149eaf02fb389fb4f96006b","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.20.0.tgz","fileCount":25,"integrity":"sha512-qa6NLszfXlbeAIMobt/smsNPh3HizV7MzE4RO+R4RwaePAJmY6OrMy24bhtCAQmmYf90DpQACr7RbcXEtwyFHw==","signatures":[{"sig":"MEQCIA8K/H4nk6G8nQq/PkIqdVgpf4Mr2qNe/arVb41xYYwcAiAMMjHCZVXwAzfYikI5SWdhvyq6cJtnqvd9Mk3pzR1GRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":245239},"type":"module","exports":{".":"./src/index.ts"},"gitHead":"579cd8ffe5244633d975db868bac5e41df392b08","private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"aliou","email":"code+npm@general-dexterity.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:6056eab7-4e70-499b-915b-1994b703294b"}},"repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"12.0.2","description":"Shared settings UI and config loader for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@aliou/pi-utils-ui":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.1","devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.5.0","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","ts-json-schema-generator":"^2.4.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"ts-json-schema-generator":">=2.4.0 <3","@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"ts-json-schema-generator":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-utils-settings_0.20.0_1787399097101_0.6062166395910793","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"pi":{"skills":["skills"]},"_id":"@aliou/pi-utils-settings@0.21.0","bin":{"pi-settings-schema":"bin/pi-settings-schema.mjs"},"bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"dist":{"shasum":"47c5d3f0d5ef46f01f08f73b4e26f016d9a85bbe","tarball":"https://registry.npmjs.org/@aliou/pi-utils-settings/-/pi-utils-settings-0.21.0.tgz","integrity":"sha512-1YoA1J1ELey9yAHaoVdGinHT9JAuDOimIwmHT7PxGn8rRUqCx+PGRDVChCV3EVQgtyxW9mzutJ8Tcdb3PwaYsA==","fileCount":25,"unpackedSize":246769,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aliou%2fpi-utils-settings@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHwvDiFt4ko1Fhxp4xnaWKelKt3VfqKfW2z6NAbK2myEAiEAyWdlA96VB6JcxhgDK7Kn5BQjpoJS9fBshYJU63nCNM8="}]},"name":"@aliou/pi-utils-settings","type":"module","exports":{".":"./src/index.ts"},"gitHead":"12f15ce388be48e950710aa13fdd226bce9c3d34","license":"MIT","private":false,"scripts":{"lint":"biome check .","test":"vitest run","format":"biome check --write .","release":"pnpm changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest"},"version":"0.21.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6056eab7-4e70-499b-915b-1994b703294b"},"approver":{"name":"aliou","email":"code+npm@general-dexterity.com"}},"homepage":"https://github.com/aliou/pi-utils-settings#readme","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"_npmVersion":"12.0.2","description":"Shared settings UI and config loader for pi extensions","directories":{},"maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"_nodeVersion":"24.19.0","dependencies":{"@aliou/pi-utils-ui":"^0.5.0"},"publishConfig":{"access":"public"},"packageManager":"pnpm@10.26.1","devDependencies":{"vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.27.11","@aliou/pi-utils-ui":"^0.5.0","@aliou/biome-plugins":"^0.8.1","@earendil-works/pi-tui":"0.74.0","ts-json-schema-generator":"^2.4.0","@earendil-works/pi-coding-agent":"0.74.0"},"peerDependencies":{"ts-json-schema-generator":">=2.4.0 <3","@earendil-works/pi-coding-agent":">=0.74.0 <1"},"peerDependenciesMeta":{"ts-json-schema-generator":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-utils-settings_0.21.0_1787942606277_0.4272658612731175"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-04T11:40:36.772Z","modified":"2026-08-28T18:43:26.741Z","0.0.1":"2026-02-04T11:40:37.090Z","0.1.0":"2026-02-04T11:49:49.969Z","0.2.0":"2026-02-05T18:54:20.598Z","0.2.1":"2026-02-07T13:51:57.378Z","0.3.0":"2026-02-11T14:18:04.412Z","0.4.0":"2026-02-17T18:01:27.294Z","0.5.0":"2026-02-19T15:04:14.897Z","0.5.1":"2026-02-19T21:27:41.210Z","0.6.0":"2026-02-23T08:21:15.723Z","0.7.0":"2026-03-02T15:06:45.122Z","0.7.1":"2026-03-02T17:38:50.060Z","0.8.0":"2026-03-04T14:45:19.394Z","0.9.0":"2026-03-05T09:18:54.901Z","0.10.0":"2026-03-06T16:36:35.322Z","0.10.1":"2026-03-18T15:37:57.507Z","0.10.2":"2026-03-20T12:26:05.169Z","0.10.3":"2026-03-24T19:00:46.075Z","0.11.0":"2026-03-25T17:35:39.026Z","0.11.1":"2026-03-26T15:27:24.771Z","0.11.2":"2026-03-26T15:31:13.573Z","0.12.0":"2026-03-29T20:09:38.137Z","0.12.1":"2026-04-02T17:10:26.818Z","0.13.0":"2026-04-06T08:44:06.268Z","0.14.0":"2026-05-05T21:14:46.352Z","0.14.1":"2026-05-06T08:17:37.694Z","0.15.0":"2026-05-07T16:35:46.454Z","0.15.1":"2026-05-07T17:13:29.203Z","0.16.0":"2026-06-01T13:01:24.901Z","0.17.0":"2026-06-10T18:06:34.063Z","0.18.0":"2026-06-21T11:12:33.355Z","0.19.0":"2026-08-05T06:17:59.218Z","0.19.1":"2026-08-05T13:19:30.379Z","0.19.2":"2026-08-16T17:03:11.692Z","0.20.0":"2026-08-22T11:44:57.202Z","0.21.0":"2026-08-28T18:43:26.347Z"},"bugs":{"url":"https://github.com/aliou/pi-utils-settings/issues"},"license":"MIT","homepage":"https://github.com/aliou/pi-utils-settings#readme","repository":{"url":"git+https://github.com/aliou/pi-utils-settings.git","type":"git"},"description":"Shared settings UI and config loader for pi extensions","maintainers":[{"name":"aliou","email":"code+npm@general-dexterity.com"}],"readme":"![banner](https://assets.aliou.me/github/aliou/pi-utils-settings/banner.png)\n\n# @aliou/pi-utils-settings\n\nShared settings infrastructure for [pi](https://github.com/mariozechner/pi-coding-agent) extensions. Provides config loading, a settings UI command with scope tabs plus optional extra tabs, and reusable TUI components.\n\nThis is a utility library, not a pi extension. It is meant to be used as a dependency by extensions that need a settings UI or JSON config management.\n\n## Install\n\n```bash\npnpm add @aliou/pi-utils-settings\n```\n\n## API\n\n### ConfigLoader\n\nGeneric JSON config loader with global + local (project) scopes, deep merge, and versioned migrations.\n\n```typescript\nimport { ConfigLoader, type Migration } from \"@aliou/pi-utils-settings\";\n\ninterface MyConfig {\n  features?: { darkMode?: boolean };\n}\n\ninterface ResolvedConfig {\n  features: { darkMode: boolean };\n}\n\nconst migrations: Migration<MyConfig>[] = [\n  {\n    name: \"v1-upgrade\",\n    shouldRun: (config) => !config.features,\n    run: (config, _filePath) => ({ ...config, features: {} }),\n  },\n];\n\nconst configLoader = new ConfigLoader<MyConfig, ResolvedConfig>(\n  \"my-extension\", // reads ~/.pi/agent/extensions/my-extension.json + .pi/extensions/my-extension.json\n  { features: { darkMode: false } }, // defaults\n  { migrations },\n);\n\nawait configLoader.load();\nconst config = configLoader.getConfig(); // ResolvedConfig (defaults merged with global + local)\n```\n\n#### Versioned migrations\n\nMigrations can declare a monotonic `version`: a non-negative integer or a semver string (e.g. the extension's package version, `\"1.2.0\"`; no prerelease tags). When set, `shouldRun` defaults to \"config version < migration version\" and the loader stamps the config file with the highest applied version. All versioned migrations in one loader must use the same scheme — mixing integers and semver strings throws at construction. Extensions already stamping integers should keep integers (a stamped `3` reads as `3.0.0` under semver). `shouldRun`, `run`, and the message factory receive a `MigrationContext` with the file path, the versions before/after, and the names of migrations already applied during the load.\n\n```typescript\nconst migrations: Migration<MyConfig>[] = [\n  {\n    name: \"v1-features\",\n    version: 1,\n    // No shouldRun needed: runs when config.version < 1.\n    run: (config) => ({ ...config, features: {} }),\n  },\n  {\n    name: \"v2-rename-theme\",\n    version: 2,\n    run: (config, _filePath, ctx) => {\n      // ctx.appliedMigrations: [\"v1-features\"], ctx.fromVersion: 1, ctx.toVersion: 2\n      const { theme, ...rest } = config as MyConfig & { theme?: string };\n      return { ...rest, appearance: { theme } };\n    },\n  },\n];\n\nawait configLoader.load();\nconfigLoader.getVersion(); // highest stamped version across scopes\n```\n\nProvide both `version` and `shouldRun` to gate on content while still stamping (e.g., `shouldRun: (c) => c.legacy !== undefined`). Migrations with neither throw at construction.\n\n#### JSON Schema support\n\n`ConfigLoader` can inject a `$schema` field into settings files, giving editors autocomplete and validation. Pair it with `buildSchemaUrl` and auto-generated schemas from `ts-json-schema-generator`.\n\n```typescript\nimport { ConfigLoader, buildSchemaUrl } from \"@aliou/pi-utils-settings\";\nimport pkg from \"./package.json\";\n\nconst schemaUrl = buildSchemaUrl(pkg.name, pkg.version);\n\n// For schemas hosted outside npm/unpkg, use a custom template:\nconst githubSchemaUrl = buildSchemaUrl(\"aliou/my-extension\", \"v1.0.0\", {\n  template: \"https://raw.githubusercontent.com/{packageName}/{version}/{schemaPath}\",\n});\n\nconst loader = new ConfigLoader<MyConfig, ResolvedConfig>(\n  \"my-extension\",\n  defaults,\n  { schemaUrl },\n);\n```\n\nWhen `schemaUrl` is set, `save()` writes `$schema` as the first key in the JSON file and `load()` strips it before returning config to callers.\n\nTo generate the schema from your `TConfig` type, install `ts-json-schema-generator` as a devDependency and use the bundled `pi-settings-schema` CLI. It wraps the generator and injects the reserved `$schema` and `version` properties, so your config type doesn't need them:\n\n```json\n{\n  \"gen:schema\": \"pi-settings-schema -p src/config.ts -t MyConfig -o schema.json --version 2\",\n  \"check:schema\": \"pi-settings-schema -p src/config.ts -t MyConfig -o schema.json --version 2 --check\"\n}\n```\n\nRun `pnpm gen:schema` to produce `schema.json`, commit it, and add `\"schema.json\"` to `files` in `package.json` so it ships with your npm package. Add `check:schema` to CI to catch drift (exits 1 when the committed schema is stale). `--version` documents the current migration version in the schema. If the extension is not published to npm, commit `schema.json` somewhere public and pass a custom `template` or `baseUrl` to `buildSchemaUrl`.\n\nThe same logic is available programmatically as `generateSettingsSchema(options)` and `finalizeSchema(schema, options)`.\n\nAn optional `afterMerge` hook runs after the deep merge for logic that can't be expressed as a simple merge (e.g., one field replacing another):\n\n```typescript\nnew ConfigLoader(\"my-ext\", defaults, {\n  afterMerge: (resolved, global, local, memory) => {\n    if (local?.customField) {\n      resolved.derivedField = local.customField;\n    }\n    return resolved;\n  },\n});\n```\n\n### registerSettingsCommand\n\nCreates a `/name:settings` command with scope tabs (Global/Local/Memory), draft-based editing, and Ctrl+S to save.\n\nAll changes (boolean toggles, enum cycling, submenu edits) are held in memory as drafts. Nothing is written to disk until the user presses Ctrl+S. Esc exits without saving by default. Dirty tabs show a `*` marker. Use `onBeforeClose` to intercept Esc, for example to confirm discarding unsaved drafts.\n\nCtrl+S saves from any depth, including inside open submenus (`ArrayEditor`, `SettingsDetailEditor`, `FuzzySelector`, ...). Submenus commit edits to the draft on every mutation, so a nested save always persists the latest state. Standalone component users can pass `requestSave` in the component options to get the same behavior outside `registerSettingsCommand`.\n\n```typescript\nimport { registerSettingsCommand, type SettingsSection } from \"@aliou/pi-utils-settings\";\n\nregisterSettingsCommand<MyConfig, ResolvedConfig>(pi, {\n  commandName: \"my-ext:settings\",\n  title: \"My Extension Settings\",\n  configStore: configLoader, // implements ConfigStore interface\n  buildSections: (tabConfig, resolved, { setDraft, theme }) => [\n    {\n      label: \"General\",\n      items: [\n        {\n          id: \"features.darkMode\",\n          label: \"Dark mode\",\n          description: theme.fg(\"dim\", \"Enable dark mode\"),\n          currentValue: (tabConfig?.features?.darkMode ?? resolved.features.darkMode) ? \"on\" : \"off\",\n          values: [\"on\", \"off\"],\n        },\n      ],\n    },\n  ],\n  // --- Optional: Custom change handler ---\n  // The default handler stores all values as raw strings (\"on\"/\"off\", \"pnpm\", etc).\n  // Use onSettingChange to convert display values to the correct storage types:\n  // - Booleans: newValue === \"on\" -> true\n  // - Numbers: Number.parseInt(newValue, 10)\n  // Return null to fall through to the default string storage.\n  onSettingChange: (id, newValue, config) => {\n    const updated = structuredClone(config);\n    if (id === \"features.darkMode\") {\n      updated.features = { ...updated.features, darkMode: newValue === \"on\" };\n      return updated;\n    }\n    return null; // Fall through for other fields\n  },\n  // Optional: return false to keep the settings UI open on Esc.\n  onBeforeClose: (isDirty) => !isDirty,\n});\n```\n\nYou can also add non-scope top-level tabs with `extraTabs`:\n\n```typescript\nimport { registerSettingsCommand, type ExtraSettingsTab } from \"@aliou/pi-utils-settings\";\n\nconst extraTabs: ExtraSettingsTab<MyConfig, ResolvedConfig>[] = [\n  {\n    id: \"examples\",\n    label: \"Examples\",\n    buildSections: ({ resolved, getRawForScope, enabledScopes }) => {\n      const globalConfig = getRawForScope(\"global\");\n      return [\n        {\n          label: \"Examples\",\n          items: [\n            {\n              id: \"example.enabledScopes\",\n              label: \"Enabled scopes\",\n              currentValue: enabledScopes.join(\", \"),\n            },\n            {\n              id: \"example.darkModeDefault\",\n              label: \"Dark mode default\",\n              currentValue: resolved.features.darkMode ? \"on\" : \"off\",\n            },\n            {\n              id: \"example.globalPresent\",\n              label: \"Global config\",\n              currentValue: globalConfig ? \"present\" : \"missing\",\n              description: \"Read-only info tab not tied to a scope.\",\n            },\n          ],\n        },\n      ];\n    },\n  },\n];\n```\n\n`Ctrl+S` behavior stays the same: only dirty scope drafts are saved. Extra tabs can update drafts by calling `setDraftForScope(...)` from submenu callbacks.\n\nFor value-cycling items (`values`) in an extra tab, add `onSettingChange` to the extra tab and choose the target scope explicitly. `applySettingChangeToScope(...)` reuses the command-level `onSettingChange` handler, falling back to the default dotted-path string storage when that handler returns `null`.\n\n```typescript\nconst extraTabs: ExtraSettingsTab<MyConfig, ResolvedConfig>[] = [\n  {\n    id: \"presets\",\n    label: \"Presets\",\n    buildSections: ({ getDraftForScope, getRawForScope }) => {\n      const config = getDraftForScope(\"global\") ?? getRawForScope(\"global\");\n      return [\n        {\n          label: \"Presets\",\n          items: [\n            {\n              id: \"features.darkMode\",\n              label: \"Dark mode\",\n              currentValue: config?.features?.darkMode ? \"on\" : \"off\",\n              values: [\"on\", \"off\"],\n            },\n          ],\n        },\n      ];\n    },\n    onSettingChange: (id, newValue, ctx) => {\n      ctx.applySettingChangeToScope(\"global\", id, newValue);\n    },\n  },\n];\n```\n\n`buildSections` ctx now includes `theme`, which is both a `SettingsListTheme` and full pi `Theme`. This means you can use list helpers (`label`, `value`, `hint`, ...) and pass the same object to components that require full `Theme`.\n\n```typescript\nimport { Wizard } from \"@aliou/pi-utils-settings\";\n\nbuildSections: (_tabConfig, _resolved, ctx) => [\n  {\n    label: \"Setup\",\n    items: [\n      {\n        id: \"setup.wizard\",\n        label: \"Run setup\",\n        currentValue: ctx.theme.fg(\"accent\", \"open\"),\n        submenu: (_value, done) =>\n          new Wizard({\n            title: \"Setup\",\n            theme: ctx.theme,\n            steps: [{ label: \"Step\", build: () => ({ render: () => [ctx.theme.hint(\"Ready\")], handleInput: () => {} }) }],\n            onComplete: () => done(\"done\"),\n            onCancel: () => done(undefined),\n          }),\n      },\n    ],\n  },\n];\n```\n\n### Submenu support\n\nItems can open submenus by providing a `submenu` factory. The factory receives the current value, a `done` callback, and a `{ requestRender, hideHint }` context so async submenus can trigger a redraw. Use `setDraft` inside submenu `onSave` to keep changes in the draft (same save model as simple values):\n\n```typescript\nimport { ArrayEditor, setNestedValue } from \"@aliou/pi-utils-settings\";\n\n{\n  id: \"tags\",\n  label: \"Tags\",\n  currentValue: `${tags.length} items`,\n  submenu: (_val, done, submenuCtx) => {\n    let latest = [...tags];\n    return new ArrayEditor({\n      label: \"Tags\",\n      items: [...tags],\n      theme: ctx.theme,\n      // Forward the host's flag: the panel renders the single controls\n      // line, so the editor hides its own footer and exposes shortcuts\n      // through getShortcuts().\n      hideHint: submenuCtx.hideHint,\n      onSave: (items) => {\n        latest = items;\n        const updated = structuredClone(tabConfig ?? {}) as MyConfig;\n        setNestedValue(updated, \"tags\", items);\n        setDraft(updated);\n      },\n      onDone: () => done(`${latest.length} items`),\n    });\n  },\n}\n```\n\nFor submenus that load data asynchronously, call `ctx.requestRender()` once the real editor is ready. The render hook is wired automatically by `registerSettingsCommand`; standalone `SectionedSettings` users can pass `requestRender` in `SectionedSettingsOptions`.\n\n```typescript\nimport type { Component } from \"@earendil-works/pi-tui\";\nimport { Key, matchesKey } from \"@earendil-works/pi-tui\";\nimport { FuzzySelector } from \"@aliou/pi-utils-settings\";\n\nfunction sleep(ms: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function loadPresets(): Promise<string[]> {\n  // Simulate a network or subprocess call.\n  await sleep(2000);\n  return [\"dark\", \"light\", \"solarized-dark\"];\n}\n\n{\n  id: \"remote.presets\",\n  label: \"Remote presets\",\n  currentValue: \"loading\",\n  submenu: (_val, done, { requestRender, hideHint }) => {\n    class AsyncPresetPicker implements Component {\n      private editor: FuzzySelector | null = null;\n\n      constructor() {\n        void loadPresets().then((presets) => {\n          this.editor = new FuzzySelector({\n            label: \"Preset\",\n            items: presets,\n            theme: ctx.theme,\n            hideHint,\n            onSelect: (selected) => {\n              const updated = structuredClone(tabConfig ?? {}) as MyConfig;\n              setNestedValue(updated, \"appearance.theme\", selected);\n              setDraft(updated);\n              done(selected);\n            },\n            onDone: () => done(undefined),\n          });\n          requestRender();\n        });\n      }\n\n      render(width: number): string[] {\n        return this.editor?.render(width) ?? [ctx.theme.hint(\"  (loading presets...)\")];\n      }\n\n      // Forward shortcuts so the panel's controls line stays\n      // accurate once the editor is ready.\n      getShortcuts(): string | undefined {\n        return this.editor?.getShortcuts();\n      }\n\n      handleInput(data: string): void {\n        if (this.editor === null && matchesKey(data, Key.escape)) {\n          done(undefined);\n          return;\n        }\n        this.editor?.handleInput?.(data);\n      }\n\n      invalidate(): void {\n        this.editor?.invalidate?.();\n      }\n    }\n\n    return new AsyncPresetPicker();\n  },\n}\n```\n\n### SectionedSettings vs SettingsDetailEditor\n\nUse **SectionedSettings** alone when each row can be edited in one step (toggle, enum cycle, or a simple submenu).\n\nUse **SectionedSettings + SettingsDetailEditor** when a selected row needs a focused second-level panel with multiple editable fields.\n\n`SettingsDetailEditor` is data-driven. You pass field descriptors with getters/setters and optional nested submenu callbacks. The component owns keyboard navigation and rendering only.\n\n```typescript\nimport {\n  ArrayEditor,\n  SettingsDetailEditor,\n  type SettingsDetailField,\n} from \"@aliou/pi-utils-settings\";\nimport { getSettingsListTheme } from \"@earendil-works/pi-coding-agent\";\n\nconst fields: SettingsDetailField[] = [\n  {\n    id: \"autoSave\",\n    type: \"boolean\",\n    label: \"Auto save\",\n    getValue: () => editor.autoSave,\n    setValue: (next) => {\n      editor.autoSave = next;\n    },\n  },\n  {\n    id: \"tabSize\",\n    type: \"enum\",\n    label: \"Tab size\",\n    getValue: () => String(editor.tabSize),\n    setValue: (next) => {\n      editor.tabSize = Number.parseInt(next, 10);\n    },\n    options: [\"2\", \"4\", \"8\"],\n  },\n  {\n    id: \"favorites\",\n    type: \"submenu\",\n    label: \"Favorites\",\n    getValue: () => `${favorites.length} items`,\n    submenu: (done) =>\n      new ArrayEditor({\n        label: \"Favorites\",\n        items: [...favorites],\n        theme: getSettingsListTheme(),\n        onSave: (items) => {\n          favorites = items;\n        },\n        onDone: () => done(`${favorites.length} items`),\n      }),\n  },\n  {\n    id: \"clear\",\n    type: \"action\",\n    label: \"Clear favorites\",\n    getValue: () => \"destructive\",\n    onConfirm: () => {\n      favorites = [];\n    },\n    confirmMessage: \"Clear all favorites? This cannot be undone.\",\n  },\n];\n\nconst detail = new SettingsDetailEditor({\n  title: \"Editor details\",\n  fields,\n  theme: getSettingsListTheme(),\n  onDone: (summary) => done(summary),\n  getDoneSummary: () => `${favorites.length} items`,\n  // When hosted via registerSettingsCommand, forward the submenu context's\n  // hideHint so the editor's own footer is hidden and the panel shows the\n  // editor's shortcuts as its single controls line.\n  hideHint: submenuCtx.hideHint,\n});\n```\n\n### Unified shortcut line\n\nThe settings panel renders exactly one shortcut line at a time, always below the separator. When a submenu is open and implements `getShortcuts(): string | undefined` (see `SettingsSubmenuComponent`), the panel's controls line shows the submenu's current shortcuts (e.g. `↑/↓ or j/k navigate · Enter edit/open · Esc back`, or `Enter: confirm · Esc: cancel` while a field editor is open) instead of the default `Enter/Space change · Ctrl+S save · Esc close`. Submenus without `getShortcuts()` fall back to the default controls line.\n\nAll built-in submenu components — `SettingsDetailEditor`, `ArrayEditor`, `PathArrayEditor`, `FuzzySelector`, and `FuzzyMultiSelector` — implement `getShortcuts()` per internal mode and render unframed (a plain title line above the body, no border), so they sit cleanly inside the panel's own border. Each accepts a `hideHint` option that suppresses its own hint footer; for `FuzzyMultiSelector`, `hideHint` takes precedence over its existing `showHints` option (default `true`). `SectionedSettings` forwards its `hideHint` option through the submenu factory context, so components hosted by `registerSettingsCommand` only need `hideHint: ctx.hideHint` (as above) to keep a single shortcut line. Ctrl+S still saves from any depth even though the submenu's line may not mention it, and Esc semantics stay accurate: with a submenu open, Esc backs out of the submenu rather than closing the panel.\n\nStandalone component users should leave `hideHint` unset so the component keeps rendering its own hint footer.\n\n### ConfigStore interface\n\n`createConfigStore(loader, { scopes? })` adapts a `ConfigLoader` to the `ConfigStore` interface, optionally exposing only a subset of scopes to the settings UI:\n\n```typescript\nimport { createConfigStore } from \"@aliou/pi-utils-settings\";\n\nregisterSettingsCommand(pi, {\n  // ...\n  configStore: createConfigStore(configLoader, { scopes: [\"global\", \"local\"] }),\n});\n```\n\nExtensions with custom config loaders can implement `ConfigStore` directly instead of using `ConfigLoader`:\n\n```typescript\ninterface ConfigStore<TConfig, TResolved> {\n  getConfig(): TResolved;\n  getRawConfig(scope: Scope): TConfig | null;\n  hasScope(scope: Scope): boolean;\n  hasConfig(scope: Scope): boolean;\n  getEnabledScopes(): Scope[];\n  save(scope: Scope, config: TConfig): Promise<void>;\n}\n```\n\n### Components\n\n- **SectionedSettings**: Grouped settings list with search filtering and cursor preservation on update.\n- **SettingsDetailEditor**: Focused second-level editor for one selected item (text, enum, boolean, nested submenu, destructive action).\n- **ArrayEditor**: String array editor with add/remove/reorder.\n- **PathArrayEditor**: Path-focused array editor with Tab completion in add/edit mode.\n- **FuzzySelector**: Fuzzy-searchable single-select list.\n- **FuzzyMultiSelector**: Fuzzy-searchable multi-select checklist with locked/recommended items and sub-options.\n- **Wizard**: Multi-step setup component with tabbed navigation, progress indicators, and bordered frame.\n\n### Helpers\n\n- `setNestedValue(obj, \"a.b.c\", value)`: Set a deeply nested value by dot-separated path.\n- `getNestedValue(obj, \"a.b.c\")`: Get a deeply nested value by dot-separated path.\n- `getSettingsTheme(theme)`: Build a combined settings theme (`SettingsTheme`) usable by both settings-list components and full-theme components like `Wizard`.\n- `buildSchemaUrl(packageName, version, options?)`: Build a URL to a JSON Schema file for `$schema` injection (defaults to unpkg, supports custom `baseUrl` or `template`).\n- `pi-settings-schema` CLI: Generate a config JSON schema from a TS type, injecting `$schema`/`version` (`finalizeSchema`/`generateSettingsSchema` for programmatic use).\n\n## Exports\n\n```typescript\nexport {\n  ArrayEditor,\n  type ArrayEditorOptions,\n} from \"./src/components/array-editor\";\nexport {\n  FuzzyMultiSelector,\n  type FuzzyMultiSelectorItem,\n  type FuzzyMultiSelectorOptions,\n  type FuzzyMultiSelectorSubOption,\n} from \"./src/components/fuzzy-multi-selector\";\nexport {\n  FuzzySelector,\n  type FuzzySelectorOptions,\n} from \"./src/components/fuzzy-selector\";\nexport {\n  PathArrayEditor,\n  type PathArrayEditorOptions,\n} from \"./src/components/path-array-editor\";\nexport {\n  SectionedSettings,\n  type SectionedSettingsOptions,\n  type SettingsSection,\n} from \"./src/components/sectioned-settings\";\nexport {\n  type SettingsDetailActionField,\n  type SettingsDetailBooleanField,\n  SettingsDetailEditor,\n  type SettingsDetailEditorOptions,\n  type SettingsDetailEnumField,\n  type SettingsDetailField,\n  type SettingsDetailSubmenuField,\n  type SettingsDetailTextField,\n} from \"./src/components/settings-detail-editor\";\nexport {\n  Wizard,\n  type WizardOptions,\n  type WizardStep,\n  type WizardStepContext,\n} from \"./src/components/wizard\";\nexport {\n  ConfigLoader,\n  type ConfigStore,\n  createConfigStore,\n  type Migration,\n  type MigrationContext,\n  type Scope,\n} from \"./src/config-loader\";\nexport { getNestedValue, setNestedValue } from \"./src/helpers\";\nexport { type BuildSchemaUrlOptions, buildSchemaUrl } from \"./src/schema\";\nexport {\n  finalizeSchema,\n  generateSettingsSchema,\n} from \"./src/schema-gen.mjs\";\nexport {\n  type ExtraSettingsTab,\n  type ExtraSettingsTabChangeContext,\n  type ExtraSettingsTabContext,\n  registerSettingsCommand,\n  type SettingsCommandOptions,\n} from \"./src/settings-command\";\nexport { getSettingsTheme, type SettingsTheme } from \"./src/theme\";\n```","readmeFilename":"README.md"}