{"_id":"opencode-homeassistant","_rev":"29-53cf41d77ab314ae372b1feca9b0c4a1","name":"opencode-homeassistant","dist-tags":{"opencode-v1":"0.7.8","latest":"1.0.2"},"versions":{"0.1.0":{"name":"opencode-homeassistant","version":"0.1.0","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.1.0","maintainers":[{"name":"pombeirp","email":"npm@endgr.33mail.com"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"2610635335952f3b7cee720b39753d8bbfba6fb7","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.1.0.tgz","fileCount":4,"integrity":"sha512-HPqb4aXXh34g+RDWa24n27SUzaH0NSbG3v51f51Td1J1bUyyxpzfzONDXOhcVmIIt3vxSGbxV411DE89kwvkkA==","signatures":[{"sig":"MEUCIQCUR2yAULgE1nAfkQqUCFHkABBjkvI4R+lcoiCF0kIK1QIgc2XIbG+hHqygCYKNTshr4cMrdwybfZJnwoOo01i34U0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9366},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"3d771a079bba72f87410016271b3b5f6218bf0c6","_npmUser":{"name":"pombeirp","email":"npm@endgr.33mail.com"},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.11.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"25.8.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.1.0_1772821775100_0.14992755311924122","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"opencode-homeassistant","version":"0.2.4","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.2.4","maintainers":[{"name":"pombeirp","email":"npm@endgr.33mail.com"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"b6274d98e442bc1e9d1ef445707d5424dbcfa5cf","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.2.4.tgz","fileCount":4,"integrity":"sha512-3PSkID9Boaf0bWbz9KVExnD5fBxrHprZfE8+Ah5CjadazFsGXW3ASf7COtw12bKJifmjA5b7I2HQVrBggY00Dw==","signatures":[{"sig":"MEQCICenuAFP57JMhF8KARWs0cB+sPiXLPbyMnyJq+8SFLY6AiBnDjV4nCFTvpnhRaulqR+7UOAW217xiRCBqGa8n29c4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9350},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"0e6d6e1e7d4e732cc2384f47b0505825894ad4ba","_npmUser":{"name":"pombeirp","email":"npm@endgr.33mail.com"},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.11.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"25.8.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.2.4_1772823541865_0.5072718431875753","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"opencode-homeassistant","version":"0.2.6","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.2.6","maintainers":[{"name":"pombeirp","email":"npm@endgr.33mail.com"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"8bd3336a1ac96a4e605cce8c0dce2a1bbc1bc546","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.2.6.tgz","fileCount":4,"integrity":"sha512-ZCOoVwgtVde9kLLqwuWmDLu2yt89fCwZX480aem7080v5HN0CQ5NHomIATJ1KBaArwo+RdcHyKMe3DhxMH/I5g==","signatures":[{"sig":"MEUCIA6VqqsYhUqbWx2prrP0gSZXU9vuvhbGDWiHkZ6EXSR1AiEA4CvOynexq1RrUfTcqV3VezJ968fDoYi85F5wjXN+oh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9350},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"2a8756cdf0703ce74f070448c1d25f97bb92c665","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.2.6_1772824260769_0.42567135395766553","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"opencode-homeassistant","version":"0.2.7","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.2.7","maintainers":[{"name":"pombeirp","email":"npm@endgr.33mail.com"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"34f0bc1c87aa323b8c06e93609f8d9bccd45af29","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.2.7.tgz","fileCount":4,"integrity":"sha512-tn3Ds07Iex0Fe+5FeSUDNU3CuKzgsGWrsplgbTrcR4xfVw3wLBm9Dw6qUg0nJXRwlISM7XmeXyrZCmO0SOWt9A==","signatures":[{"sig":"MEQCIEsLe+hgsQMoNdDZB7psbm+dbtHegy7EGPBVvmGS8981AiAIFeIgl5SbGU67w80tApzx905K2z3FhaBI8GS8oTuN3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9361},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"c707fb97b0cd3befbf0b7077aeb99f99720409bc","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.2.7_1772824429789_0.8018420324852691","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"opencode-homeassistant","version":"0.3.0","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.3.0","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"919f0acbd0df08ea74da1ef280098a32953f6205","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.3.0.tgz","fileCount":4,"integrity":"sha512-9Ig532jatjhuJ4xCvUs2O3/972Kt4AfO3O6W9FbnHAr0DUESwHII/aIJzUxlh3xsYGyJNqKWNXsnmPDSw3CiGA==","signatures":[{"sig":"MEYCIQCV9DAkpUxu886dualuwq/x71gJ6UPU4saqLSB54Qe60QIhAOVHy6T/idiT/LV5hUKqoO4Qxlz4fDDadnh3SWm/gG/O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16810},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"b681ded747c7859ab52cd273ef44c928192a1d52","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.3.0_1772965258176_0.7689238642958545","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"opencode-homeassistant","version":"0.3.1","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.3.1","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"ac51c6a28d501a5338903727da4b65094c9f88a3","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.3.1.tgz","fileCount":4,"integrity":"sha512-wGz9XA0jSMwid0UM7cUjHchSPDkf6qn0DQbv3y0EI3+UPGQLWbmwU34yYn7HFbHldzYb9ElDFmfVy71vBZ463w==","signatures":[{"sig":"MEUCIH9i3u9xxVU4ALDZTRH05rtRJAL/KT0W8GiK2KeXtgXEAiEAklcK4u+BARndFhXzlJIVcUAIWaMkr+9KRTTW5fXQSt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16949},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"c7521c6082389074613c9aba21f4d143f7f6c421","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.3.1_1773071642155_0.6483403584741594","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"opencode-homeassistant","version":"0.3.2","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.3.2","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"b9827f33a02781edd142fe54945daa4cf8635707","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.3.2.tgz","fileCount":4,"integrity":"sha512-M21o7VwPoTSE+bZEgWv8mUF32F59qwJBiY2fvCgB2RfSJjlmBsmNPHcd4gEP/WcgAWi2Pzd5X2nO8I0jp/PtMw==","signatures":[{"sig":"MEYCIQDvRzr7T5Mh21JeV0yheU2x5IULvt4ZOJg7Yh6zhS1yQQIhAJ9jaUJ6jiVT7+4QYgSVYMH/hcsmm3ltBc1rZwuyBuHR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17139},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"7df285c6f291168332dcf75f11d43fbac5b3ad66","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.3.2_1773075050821_0.9059212023330667","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"opencode-homeassistant","version":"0.4.0","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.4.0","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"e8e44a4eb7f1125c08e80334e2dd6a23fab9bba4","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.4.0.tgz","fileCount":4,"integrity":"sha512-JKtknrKGbE8PXA4s5G8Lfv39B5dnJmJgAAVDieCZhN6OiSWO9QleTIynO/ANU5U30/RIhtbI6VC6Kh+DHUzbow==","signatures":[{"sig":"MEYCIQD+N3h3mBXG1EnMAWUBEEICepeXnt5UpA9Yl4tZcuIM2gIhAOTpZu0ut/6ea3REn5S/wxTQ2Ei6MzrHdMff7ZbabsH2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24865},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"2832723609c44f7e4ffcca6b7d2e1ec152815f2b","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhook","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.4.0_1773146678000_0.2952479208582033","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"opencode-homeassistant","version":"0.4.1","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.4.1","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"7a24626e30c8ac59f20558687ace480b2333a58a","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.4.1.tgz","fileCount":4,"integrity":"sha512-7iFLMF2l1LVA0qrj9+Icml1mM9+83U+jwYv6392DcwVmI2GULdzcMOpXrNGW80cF7jyOgAmOQZpGe5ztkojTHg==","signatures":[{"sig":"MEYCIQCtAbFWZHP/27ugMFAYYAd+rtPfnnM/bEq/aW0Uj30S2QIhAKcbzFzRcw4J+oizbPJOGKsQGwZqUgutXOSZeeMeMbVA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25201},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"b17fd9969e89841cf0c6b1beb49dfeccff7a21a1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.4.1_1773152743147_0.43288238430851234","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"opencode-homeassistant","version":"0.4.2","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.4.2","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-homeassistant#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-homeassistant/issues"},"dist":{"shasum":"af28ee79725f066c92dd6b355298c51093a2ef47","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.4.2.tgz","fileCount":4,"integrity":"sha512-bFqCcktzTza4muxO7gO7RmD3mjcgyU3SAKCz9enzyXqTUSyS5UY/hBypEriGI85rxaaNqHi3YduQot8mexzz0A==","signatures":[{"sig":"MEUCIEIFBibEz5IUke4kabrzK5fIBcKSN6ydV6g7zdbSnjH2AiEAxZTh2J+4Kborwa87tb7SnrDqjlcH4KwTU0FpLDq4znc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36412},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"e62edac51ae2397219a3cd6d57702a43e8ea9501","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ced41656-5a7b-46ad-aba7-6453abefa1ea"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-homeassistant.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","prettier":"^3.2.4","bun-types":"1.3.10","@eslint/js":"^9.39.1","typescript":"^5.7.0","@types/node":"^20.11.5","typescript-eslint":"^8.47.0","@opencode-ai/plugin":"1.0.85","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"^5.1.3"},"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.4.2_1773157944631_0.42521689463115586","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"opencode-homeassistant","version":"0.4.3","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.4.3","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"d1f0b37d1679ea954d02573d7e97698358bc0023","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.4.3.tgz","fileCount":3,"integrity":"sha512-C5cXm+muZIX/rcB8EdZqV1VKlvQKb7zuWzPG/9LKNDLhwx6YlAKZ5Xq1KgJvvSClvo9jbUSqfdSnzjBSxwQaKw==","signatures":[{"sig":"MEQCICPv++b25KMz48LiqB8cp5A9t75MOq7eotvrQ3V9+yPoAiBL+jsIpb8JTenxJZdt4Bdu2MA1BAJ/SwsPawK3VltaXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35651},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"77991e51e35282801fbf346b7e767c84f585b687","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e2ca757e-36d9-4592-ba6b-108bcaed102a"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.9.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.4.3_1773352877056_0.06591727932553737","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"opencode-homeassistant","version":"0.5.0","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.5.0","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"81f28f7ff6d0578c3ed36667329dc88bb6912a43","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.5.0.tgz","fileCount":3,"integrity":"sha512-Q24g//b2a6awvgQd+WJ9UDqFYMUkFEeenwsisbfQhDaoILNL38Z6G837z/YJIoR2PemUsIz1SIGRAEQGz5n1lQ==","signatures":[{"sig":"MEUCIQC/kBub9jWLvBs6OXttxckJG74Gli/HFxbDrliR/d1vuAIgNrgfJ5PpRJ9neRf7wdNfu8ByLfP9hCRQzJ6AFQqvBmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35761},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"b98386864f28a1d0467b92d4a06a76c6cab8d660","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.11.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.5.0_1778522758227_0.4920588343622565","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"opencode-homeassistant","version":"0.5.1","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.5.1","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"148987af826132eadb4de8b331b7bfade7fa8bcb","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.5.1.tgz","fileCount":3,"integrity":"sha512-+D/SaVW/W5TYU2BpkyGQ42JTF9wg16Nt17AGicER0LYxHSwozgm/t9lXg9/EC6mPfoOFuRufR9kOg9iWtQ/N9A==","signatures":[{"sig":"MEYCIQDdz+iWNBZuhP3IL8NXNHx+XZo7aBgam5iwtTP66SJLQAIhAIUL810V9OopNNJzWs5VLo4nW0QvoUv+hdRBI+Cmmio+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36747},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"3708d8adcfc346fb5b522457941797f74a9d0181","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.16.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.5.1_1785955846165_0.7831768940348034","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"opencode-homeassistant","version":"0.5.2","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.5.2","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"866045248b796c7ab17628ad5fa24b4cb3260e35","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.5.2.tgz","fileCount":3,"integrity":"sha512-/XuamknOwQP6NfkESkttUd+sjuHBfHhGN/27rqC05tDn/2kf8/9ei336GMSuO3W2FxlIU3kjGFChVd6SXL9N7w==","signatures":[{"sig":"MEYCIQC9QdKRSsOs+GYTYZsWiJQlsaHRyzdpcTw19tiSEksUxAIhAMgWBvmnu7adffFo8RQIH/BCmVBsd+M0Be9XkeLdBSQq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40795},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"bc636d13f87cfd4eb6f3f1bc02f0f84ef368d060","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.16.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.0.85"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.5.2_1786089849861_0.33769503614988383","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"opencode-homeassistant","version":"0.6.0","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.6.0","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"69381be6f8826af5547a7fa45dd61baa7532e5a6","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.6.0.tgz","fileCount":3,"integrity":"sha512-+6ObRk91gAjMu7X9JxvG4vup5gsw/ZfyQUNHAcbnHSvvj4VUuRlI27oyc9yBLxn+mBMIOFkK+QJAszQXRTOeIg==","signatures":[{"sig":"MEYCIQCZgPyyUn8JoPRtpc00poJ8NzfrSGTqTncptAv9FmmvdgIhAIvyZk7ACHm43ZefL9EPnYhjXORiXZ6s86Az7NFFnwsm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41674},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"880e983c148562da2d8f8f97bfd91166a925381d","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.6.0_1786637391306_0.5072247374105263","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"opencode-homeassistant","version":"0.7.0","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.0","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"1d42f29dc24a5d79ed97918fa6e68c82dfce056e","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.0.tgz","fileCount":3,"integrity":"sha512-oXw2iCIgGGmZ3HJIKSTb68cVQjwMp5x5Vwx8mYg6CJkSZja0TSE9ZRmlrwyTcMikoZUQbyenrh+0GG0njtla8Q==","signatures":[{"sig":"MEQCID5XfqaEo0OUbgBcjDo5nieGIvkqiZrAB1J3xWXLT5RAAiAjlB0hbCJKsjd8mhNtqFCNbHE+4CJLjrgXWzgOpUEJfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45957},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"d8d9ee1e20156dacd3a43ece4b172d5df067be58","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.0_1787060267282_0.6657229860271316","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"opencode-homeassistant","version":"0.7.1","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.1","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"2185cd8b8046212cbb104fd2c269650ae65ccb21","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.1.tgz","fileCount":3,"integrity":"sha512-dm6QtXTION9U5bu2PuklRxLT1mx26lXeAHI3aNWQS/j3WG5+QG3kGDvgf2qWW4+vsRZGuJlecbcZdnduqaRbkw==","signatures":[{"sig":"MEYCIQCDV9FUeRBaHhMVO6F2kh337dD/4y6jTSoznC7YqinorQIhAPH6X3/kUL8FOYe+OdQKdQ0ySDViqu8W6QcMfSBjvtDG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45079},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"22fc9cb9dec7613bd4076295f96b8619394e9a23","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.1_1787073202753_0.25318878291038827","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"opencode-homeassistant","version":"0.7.2","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.2","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"15f8ccbe0bed5cad2bd655ae840f42a80ec91879","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.2.tgz","fileCount":3,"integrity":"sha512-tdIjNCoXGJtZRU/Q8V6+OZx4lMVzP99npG13sZURCuzit14vTbypwh7bYFhVdqbaSgZm4yFK4trsb8DZDaNvrQ==","signatures":[{"sig":"MEQCIAPyMrS2hYdkUZpOj2vByXGg7p7uIkEi72r0be6DI3IWAiAbusyISr5k5rp1UwkobYrSPDCwpNSaI/JwmT1/Bmhbdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48809},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"8b08f8a840a481ce980e71517aa902def1c9556c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.2_1787086778910_0.8433645102851914","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"opencode-homeassistant","version":"0.7.3","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.3","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"6dca3c105b82658c7a2b708e8c10a65d04d1e3dd","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.3.tgz","fileCount":3,"integrity":"sha512-6LQiwu/UhvbYhDjWZedSY43dvMAQNEeGzSU/7tNJ7uHqIHaVE9jzoi+E58Yq3aEpLDMMsgtYyoE1a1Gh5v4XKw==","signatures":[{"sig":"MEUCIQDTCNMiMqt4mJFBeGXPaj1/4gXbYX7d3T3EppLjErHV3AIgKolK41Pa/i0SkH+wCKgctAXziXuJzpH6DmzxnsKgmdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50654},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"ee023570a88c3b523754442b460aefee303e7020","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.3_1787123189684_0.328881147047156","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"opencode-homeassistant","version":"0.7.4","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.4","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"ad20a4e87fe0608862b1df27a8e5534a389e11bd","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.4.tgz","fileCount":3,"integrity":"sha512-AWL7ZJDNUSRmkZayt/O6kFY/D67my1n0r4j9T3eA/HPi4RVj7mHxZTNgHEC3Q+sOy4GHw0wq+qhnJOI5Qind2w==","signatures":[{"sig":"MEYCIQC4Bn89qaFw8upmZFO3LWuF0g/jpwIy7x8AKmjU/wixvQIhANuecm5g5/RmHGYJsUvCznSczvtjynJMpz9MkDXdg3Hu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51657},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"6e3363d2cf6cf2065380bbd8d18f7666c1dfdf8e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.4_1787124058989_0.6951234996019016","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"opencode-homeassistant","version":"0.7.5","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.5","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"4f253a2bed7efbb97361c3aad39a88d3fe18f26e","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.5.tgz","fileCount":3,"integrity":"sha512-VyVNpq76UHTOI5CAXZZWk9BEJKmGDzdnVp5VtKIWSPSpzBLuMMFz/Mq2QChzNy5tTQ4jZGH7LjxvYXikM1Gk6g==","signatures":[{"sig":"MEUCIF4+XJddxKxBdMqPweAEjePcbgPKsgZNSVBNgzgRYZPJAiEA7G0wRzYotF0f4X3c7F2pAPYgvtC+UsZjtzJVe2cWodk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52592},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"9cd42efb77178ea47094e508364445843dd8cfa7","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.5_1787128193929_0.1867991078735498","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"opencode-homeassistant","version":"0.7.6","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.6","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"4601c73049de7abfcc7f4aff3f928beca86b8f63","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.6.tgz","fileCount":3,"integrity":"sha512-N0jbkYg5BobziJuQ6K/oCCZF1zAZCP3eGs+JCIDlg+F+nWjuLK9MgCq/mPu8FIeQpM8qH6/UcQq/DDxYjNWDrw==","signatures":[{"sig":"MEUCIE2YxS3pIzq91N/sxHPZZlhfmPvy1zdSRTOsoDccImWDAiEAr9Lb84iLybB6iXJ3YcsFD4VLYmjy9yuSy2bZCj4HAyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52881},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"9b7e81d363d1aa76b89b39d73e405be557942511","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.6_1787132045992_0.8036185816077206","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"opencode-homeassistant","version":"0.7.7","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.7","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"328b47067879674a72ddfb3808b7ee113b302218","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.7.tgz","fileCount":3,"integrity":"sha512-7DNCrjMPzTQqG8ZUeAMwEQtV1DvQvUR4Yanmw721MhfzQ2i/pM/C7uKsSuJeig7z4Cu8L6wo0FloQ1jzqpI3Ww==","signatures":[{"sig":"MEYCIQDHFs270bHsd/zUbPHsQV7Q9slYG/qER5HvSRoJSIEO0gIhANY+Cg8rYSeS5T+AJAumzGrA9rDCLO/HQLwN5Bsur+7j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54984},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"14bcadd913eaf50d626c2a5321b00251feff6c96","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.7_1787160094367_0.7287107961950952","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"opencode-homeassistant","version":"0.7.8","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@0.7.8","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"412fd36d1047e2a23ec0bc0bf875e96bfafc6f51","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-0.7.8.tgz","fileCount":3,"integrity":"sha512-teYgs3NHGUJgC96TYbHnafdZx/u4amx4WS1D6Gxy4usr46ruw4WjdLBzPQlZoa06NI8SgnkNTMNlugUzv3BuJQ==","signatures":[{"sig":"MEYCIQDtDC6FH+b/vvZKrfBUfwFhgF9JSnMq46dJBoFHZdQ93AIhAKwnztbCsZk0kpgpl0yZDN49YUY6RyCD/1eXA07SPvsF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@0.7.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55147},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"}},"gitHead":"6b13e0290c055af0a4a183ccdd5f34a03f32f290","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.17.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode-ai/plugin":">=1.15.11"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_0.7.8_1787238248944_0.3480345806091947","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"opencode-homeassistant","version":"1.0.0","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@1.0.0","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"953f3b8734f0f869f1fdf9829b7ea070c5866344","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-1.0.0.tgz","fileCount":4,"integrity":"sha512-gpmmEK878JvKIO30nZdsRSDGmvnCXTdS1wr2nC8QWom+wVkXc++y3Czmn9UA5jBH7TAkYJ8uSFNpJxzr7RcF5Q==","signatures":[{"sig":"MEYCIQCZatPu4ryC4koJ8Cnwz9RonKXS7i8HxOjcmuGZbRw3+gIhANWBJadVq6/rwfPvJjDabSFezaciT1kdJS5GU1Wtb6Qv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD48SrbSXVsmG7h1eCyk1+cyLfLPew1j8aLSdpC/bz/9gIgfgs2awpakWlS94fNe0iRgMaOyKY7nofmz/0jX+9kr8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56107},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"},"./tui":{"default":"./dist/tui.js"}},"gitHead":"23b9f5e3d55f41f31e54505f3e38444f6a5767ed","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.19.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode/plugin":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_1.0.0_1790256026916_0.9842880396006126","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"opencode-homeassistant","version":"1.0.1","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","_id":"opencode-homeassistant@1.0.1","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"1ec446f82cccef2d18fbf6232d7bb5a66fecb955","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-1.0.1.tgz","fileCount":4,"integrity":"sha512-lFK0k7TUVgvnDHULafWwJh0i3qX6Lb19Iw4O8XPQM/Mb7TtDwlhHN9wDgXoTFBLC+DL+uObHD9IMOZJYhBU/8Q==","signatures":[{"sig":"MEYCIQCPh+yn4h6FQvKhxrfiPNpg7pwXyB6y0YJI95K1GeETKQIhAKFVuKmQgFYzcECGncTarOx65a6dRnsv9uyTLIeL5l5m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDP96PHXiye3sgn1Z1Q9RxJIyE5BOf422wGEBdefcmaiQIhAMmq3EiTbc5Sd1iR6yaEbZAsdBiVY7FRSVH8jILpOFgD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56125},"main":"./dist/index.js","type":"module","exports":{".":{"default":"./dist/index.js"},"./tui":{"default":"./dist/tui.js"}},"gitHead":"9c9826390a8d4392ab9574864ca791a3b1797397","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.19.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode/plugin":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-homeassistant_1.0.1_1790257902999_0.8060771992461475","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"_id":"opencode-homeassistant@1.0.2","bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"dist":{"shasum":"3b6c9b95b1d53d74f689efbe2c64a564514a61a3","tarball":"https://registry.npmjs.org/opencode-homeassistant/-/opencode-homeassistant-1.0.2.tgz","fileCount":4,"integrity":"sha512-elpfF8UjpRA5h7DZ69fwbDCQnl9Vcq6s2B40zh8Cy9hVjODoZ5lWu/irSZxTp6UYzviPGffWRr/HS3ZWjB81xA==","signatures":[{"sig":"MEUCID9T9M+NevOmeg3kzXVQEVxWHPHWk09N8R1Ub55cIS3wAiEAr+1NNJP1DAdO4iVnYu4p9hWKnwRN/6h6tCPSDDVZPsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHdSCj1r+pVDTCyTzigJwRjHYLlbjAJisNxjA6ctCobKAiAb4GmBRsWp7Faet4tNtgVrtZouv5yVUUTdP5Baiqzu8g=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencode-homeassistant@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57589},"main":"./dist/index.js","name":"opencode-homeassistant","type":"module","author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"exports":{".":{"default":"./dist/index.js"},"./tui":{"default":"./dist/tui.js"}},"gitHead":"4706444060895a4b9d9db725a66dc40d43d4b74e","license":"MIT","version":"1.0.2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36226a1c-c757-4d4c-9056-fc9cdb18f8dd"}},"homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"_npmVersion":"11.19.0","description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","directories":{},"maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@opencode/plugin":"^2.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opencode-homeassistant_1.0.2_1790271361525_0.9952985911481254"}}},"time":{"created":"2026-03-06T18:29:35.017Z","modified":"2026-09-24T17:36:02.007Z","0.1.0":"2026-03-06T18:29:35.253Z","0.2.4":"2026-03-06T18:59:01.990Z","0.2.6":"2026-03-06T19:11:00.928Z","0.2.7":"2026-03-06T19:13:49.961Z","0.3.0":"2026-03-08T10:20:58.333Z","0.3.1":"2026-03-09T15:54:02.298Z","0.3.2":"2026-03-09T16:50:50.966Z","0.4.0":"2026-03-10T12:44:38.199Z","0.4.1":"2026-03-10T14:25:43.355Z","0.4.2":"2026-03-10T15:52:24.837Z","0.4.3":"2026-03-12T22:01:17.201Z","0.5.0":"2026-05-11T18:05:58.362Z","0.5.1":"2026-08-05T18:50:46.358Z","0.5.2":"2026-08-07T08:04:10.017Z","0.6.0":"2026-08-13T16:09:51.441Z","0.7.0":"2026-08-18T13:37:47.455Z","0.7.1":"2026-08-18T17:13:22.904Z","0.7.2":"2026-08-18T20:59:39.060Z","0.7.3":"2026-08-19T07:06:29.837Z","0.7.4":"2026-08-19T07:20:59.116Z","0.7.5":"2026-08-19T08:29:54.073Z","0.7.6":"2026-08-19T09:34:06.140Z","0.7.7":"2026-08-19T17:21:34.514Z","0.7.8":"2026-08-20T15:04:09.101Z","1.0.0":"2026-09-24T13:20:27.008Z","1.0.1":"2026-09-24T13:51:43.088Z","1.0.2":"2026-09-24T17:36:01.632Z"},"bugs":{"url":"https://github.com/pedropombeiro/opencode-plugins/issues"},"author":{"name":"Pedro Pombeiro","email":"pedropombeiro@users.noreply.github.com"},"license":"MIT","homepage":"https://github.com/pedropombeiro/opencode-plugins#readme","keywords":["opencode","opencode-plugin","home-assistant","webhook","homeassistant"],"repository":{"url":"git+https://github.com/pedropombeiro/opencode-plugins.git","type":"git","directory":"packages/homeassistant"},"description":"OpenCode plugin that sends agent status to Home Assistant via webhooks -- and optionally lets you respond to permission requests from HA","maintainers":[{"name":"nm156","email":"npmjs@pedro.pombei.ro"}],"readme":"# opencode-homeassistant\n\nAn [OpenCode](https://opencode.ai) plugin that sends agent status to [Home Assistant](https://www.home-assistant.io) via webhooks -- and optionally lets you respond to permission requests from HA.\n\nRequires OpenCode 2. For OpenCode 1, install the `opencode-v1` dist-tag\n(`npm install opencode-homeassistant@opencode-v1`).\n\n## Features\n\n- Notifies Home Assistant when the OpenCode agent becomes busy, idle, waiting, or encounters an error\n- Sends the hostname alongside the state, so you can identify which machine triggered the automation\n- Tracks session duration -- `idle`, `waiting`, and `error` payloads include `durationMs` (time since the last `busy` event)\n- Flushes pending webhooks when OpenCode exits, including a final `idle` update for active sessions\n- Automatically cleans up sessions stuck in `busy` state after 10 minutes of no activity, checked every minute\n- Per-state webhook routing -- send different states to different webhook IDs\n- Multiple webhook targets -- send the same state to several Home Assistant instances\n- Includes question choices in `waiting` payloads -- HA can render actionable notifications with the available options\n- Remote permission response -- approve or deny agent permissions from HA (via entity polling)\n- JSON payload, compatible with Home Assistant's webhook trigger out of the box\n\n## States\n\n| State     | OpenCode event                                                  | Description                             |\n| --------- | --------------------------------------------------------------- | --------------------------------------- |\n| `busy`    | `session.execution.started`, repeated on `session.step.started` | Agent starts or continues processing    |\n| `idle`    | `session.execution.succeeded`, `session.execution.interrupted`  | Agent finishes and is waiting for input |\n| `waiting` | `permission.asked`                                              | Agent requests user permission          |\n| `waiting` | `form.created`                                                  | Agent asks the user a question          |\n| `error`   | `session.execution.failed`                                      | Session encounters an error             |\n\n## Payload\n\nThe plugin sends a `POST` request with `Content-Type: application/json`:\n\n```json\n{\n  \"state\": \"idle\",\n  \"hostname\": \"my-macbook\",\n  \"project\": \"my-app\",\n  \"sessionId\": \"01JFF...\",\n  \"durationMs\": 12345\n}\n```\n\n| Field        | Description                                                                 |\n| ------------ | --------------------------------------------------------------------------- |\n| `state`      | One of `busy`, `idle`, `waiting`, `error`                                   |\n| `hostname`   | Machine hostname (`os.hostname()`)                                          |\n| `project`    | Directory name of the current project                                       |\n| `sessionId`  | OpenCode session ID (useful for correlating events)                         |\n| `durationMs` | Milliseconds since the session became `busy` (omitted from `busy` payloads) |\n| `waiting`    | Details about what the agent is waiting for (only on `waiting` payloads)    |\n\n### `waiting` object\n\n| Field       | Description                                                                      |\n| ----------- | -------------------------------------------------------------------------------- |\n| `reason`    | Either `permission` (agent needs approval) or `question` (agent asks a question) |\n| `id`        | Permission ID or question request ID, used for remote replies                    |\n| `type`      | Permission action, e.g. `shell`, `edit`, `webfetch` (only for `permission`)      |\n| `title`     | Human-readable description of the request                                        |\n| `pattern`   | The command or path pattern being requested (only for `permission`)              |\n| `questions` | Array of question details with options (only for `question`)                     |\n\nIn a Home Assistant automation, access these values via `trigger.json.*`, e.g. `trigger.json.state`.\n\n### Permission payload example\n\n```json\n{\n  \"state\": \"waiting\",\n  \"hostname\": \"my-macbook\",\n  \"project\": \"my-app\",\n  \"sessionId\": \"ses_...\",\n  \"durationMs\": 4200,\n  \"waiting\": {\n    \"reason\": \"permission\",\n    \"id\": \"per_cd77d4766001...\",\n    \"type\": \"shell\",\n    \"title\": \"shell: mkdir test-folder\",\n    \"pattern\": [\"mkdir test-folder\"]\n  }\n}\n```\n\n### Question payload example\n\n```json\n{\n  \"state\": \"waiting\",\n  \"hostname\": \"my-macbook\",\n  \"project\": \"my-app\",\n  \"sessionId\": \"ses_...\",\n  \"durationMs\": 5000,\n  \"waiting\": {\n    \"reason\": \"question\",\n    \"id\": \"frm_014e8b5fe001...\",\n    \"title\": \"Choose framework\",\n    \"questions\": [\n      {\n        \"header\": \"Choose framework\",\n        \"question\": \"Which framework would you like to use?\",\n        \"options\": [\n          { \"label\": \"React\", \"value\": \"React\", \"description\": \"Component-based UI library\" },\n          { \"label\": \"Vue\", \"value\": \"Vue\", \"description\": \"Progressive framework\" }\n        ]\n      }\n    ]\n  }\n}\n```\n\nEach question in the `questions` array has:\n\n| Field      | Type       | Description                                             |\n| ---------- | ---------- | ------------------------------------------------------- |\n| `header`   | `string`   | Short label                                             |\n| `question` | `string`   | Full question text                                      |\n| `options`  | `array`    | Available choices (`label`, `value`, and `description`) |\n| `multiple` | `boolean?` | Whether multiple selections are allowed                 |\n\n## Installation\n\n```bash\nopencode plugin add opencode-homeassistant\n```\n\nThis adds the plugin to your `opencode.json`:\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"plugins\": [\"opencode-homeassistant\"]\n}\n```\n\nThe package has a server entrypoint, which sends webhooks and polls Home Assistant, and a CLI\nentrypoint, which OpenCode loads automatically. The CLI entrypoint only delivers question answers\nfrom Home Assistant, because OpenCode 2 lets only CLI plugins reply to questions.\n\n## Configuration\n\nCreate `~/.config/opencode/opencode-homeassistant.json`:\n\n```json\n{\n  \"webhookUrl\": \"https://your-home-assistant/api/webhook/your_webhook_id\"\n}\n```\n\nThe config file path can be overridden with the `OPENCODE_HA_CONFIG_PATH` environment variable. See [webhook trigger documentation at Home Assistant](https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger).\n\nYou can also pass any of these settings as plugin options. Options take precedence over the config\nfile:\n\n```json\n{\n  \"plugins\": [\n    {\n      \"package\": \"opencode-homeassistant\",\n      \"options\": { \"webhookUrl\": \"https://ha.local/api/webhook/opencode_status\" }\n    }\n  ]\n}\n```\n\nIf no webhook URLs are configured or the config file is missing, the plugin is disabled silently.\nThe plugin reads its configuration when it loads, so restart OpenCode after changing it.\n\n### Debug log\n\nThe plugin writes nothing by default. To troubleshoot remote replies, enable the debug log:\n\n```json\n{\n  \"debug\": true,\n  \"debugLogPath\": \"~/.local/state/opencode/homeassistant.log\"\n}\n```\n\n`debugLogPath` defaults to `~/.local/state/opencode/homeassistant.log`. At startup the plugin\nrecords its resolved version and remote reply settings:\n\n```text\nstarted version=X.Y.Z, entity=input_text.opencode_permission_response, permissionTimeout=120s, remoteReplies=enabled\n```\n\nEach poll then records when it starts, which response it matched, and why it gave up.\n\n### Per-state webhook routing\n\nUse `webhookUrls` to send different states to different webhook IDs. A `default` key acts as a fallback for any state without its own entry:\n\n```json\n{\n  \"webhookUrls\": {\n    \"busy\": \"https://ha.local/api/webhook/opencode_busy\",\n    \"error\": \"https://ha.local/api/webhook/opencode_error\",\n    \"default\": \"https://ha.local/api/webhook/opencode_general\"\n  }\n}\n```\n\nWith this config, `busy` and `error` events go to their own webhooks while `idle` and `waiting` fall back to the `default` webhook.\n\n### Multiple webhook targets\n\nEach entry in `webhookUrls` can be a single URL or an array, allowing you to notify multiple Home Assistant instances or trigger several automations at once:\n\n```json\n{\n  \"webhookUrls\": {\n    \"default\": [\n      \"https://ha-home.local/api/webhook/opencode_status\",\n      \"https://ha-office.local/api/webhook/opencode_status\"\n    ],\n    \"error\": \"https://ha-home.local/api/webhook/opencode_errors\"\n  }\n}\n```\n\n### Precedence\n\nThe plugin resolves webhook URLs in this order:\n\n1. `webhookUrls[state]` -- exact match for the current state\n2. `webhookUrls.default` -- fallback for unmatched states\n3. `webhookUrl` -- legacy single-URL config (used when `webhookUrls` is absent)\n\n### Remote permission response\n\nThe plugin can relay permission responses from Home Assistant back to OpenCode. When a `permission.asked` event fires, the plugin sends the webhook **and** starts polling an HA entity for a response. If the user answers the permission locally in the TUI, the poll aborts immediately.\n\nTo enable this, add the following to your config:\n\n```json\n{\n  \"webhookUrl\": \"https://ha.local/api/webhook/opencode_status\",\n  \"haApiUrl\": \"https://ha.local/api\",\n  \"haToken\": \"${HA_LONG_LIVED_TOKEN}\",\n  \"permissionResponseEntity\": \"input_text.opencode_permission_response\",\n  \"permissionTimeout\": 120\n}\n```\n\n| Field                      | Default                                   | Description                                               |\n| -------------------------- | ----------------------------------------- | --------------------------------------------------------- |\n| `haApiUrl`                 | _(required)_                              | Home Assistant REST API base URL                          |\n| `haToken`                  | _(required)_                              | Long-lived access token (supports `${ENV_VAR}` expansion) |\n| `permissionResponseEntity` | `input_text.opencode_permission_response` | Entity the plugin polls for the user's response           |\n| `permissionTimeout`        | `120`                                     | Seconds to wait for a response before giving up           |\n\n> [!IMPORTANT]\n> `${ENV_VAR}` expansion reads the **opencode process environment**, not your interactive shell. Exporting the variable in `.zshrc` is not enough when opencode is launched from a GUI app, a launch agent, or any non-login context, and opencode does not read `.env` files. If the variable is missing, remote replies are silently skipped: the notification still arrives, but tapping it does nothing.\n>\n> A reliable option is a mise `[env]` entry, which does reach opencode:\n>\n> ```toml\n> # ~/.config/mise/config.local.toml (machine-local, untracked)\n> [env]\n> HA_LONG_LIVED_TOKEN = \"eyJhbGciOi...\"\n> ```\n>\n> To check what opencode actually sees, enable the [debug log](#debug-log) and answer a prompt. The plugin names the exact missing variable:\n>\n> ```text\n> not polling because haToken references HA_LONG_LIVED_TOKEN,\n> which is not set in the opencode process environment\n> ```\n\n**How it works:**\n\n1. Plugin sends the `waiting` webhook (with `waiting.id` set to the permission ID or question request ID)\n2. Plugin starts polling `permissionResponseEntity` every 2 seconds\n3. HA automation shows an actionable notification; when the user taps an action, the automation sets the entity state (see formats below)\n4. Plugin reads the response, clears the entity, and replies to OpenCode. Question answers go through the plugin's CLI entrypoint, so they need a connected OpenCode terminal interface.\n5. If the user answers locally in the TUI instead, the plugin receives a `permission.replied`, `form.replied`, or `form.cancelled` event and stops polling immediately\n\nEach pending request gets its own webhook and its own poll. When an agent asks for several permissions at once, you receive one notification per request and can answer them in any order. The session resumes only after every request has been answered, so make sure your automation includes the request ID in the response rather than assuming a single outstanding request.\n\n**Response formats**\n\nThe entity value is disambiguated by splitting on `:`. A first segment of `question` marks a question response (3 segments); anything else is a permission response (2 segments).\n\n| Kind       | Format                               | Example                 |\n| ---------- | ------------------------------------ | ----------------------- |\n| Permission | `<permissionId>:<response>`          | `per_abc123:allow`      |\n| Question   | `question:<requestId>:<optionIndex>` | `question:frm_xyz789:0` |\n\nValid permission responses: `allow`, `always`, `deny`.\n\n`<optionIndex>` is a 0-based index into `questions[0].options` -- the same array sent in the `waiting` payload. An index is used rather than the label because labels may contain `:`, carry emoji, or exceed the `input_text` 255-character limit. If the index is out of range or unparsable, the plugin sends no reply rather than a malformed answer.\n\nNotes and limits:\n\n- Only `questions[0]` is answered. Multi-question requests are not supported.\n- Exactly one option is sent, since iOS notification actions are single-tap. For `multiple: true` questions, the answer contains only that option.\n- `custom: true` (\"Type your own answer\") is not representable, as HA builds buttons from `options` only.\n- HA should clear the entity shortly after setting it (5 seconds is a good default) to stop stale values latching. The 2-second poll interval sits comfortably inside that window -- do not raise it much beyond 2s without widening the reset delay.\n\n## Automation ideas\n\n### Busy light / desk LED\n\nChange the color of a smart bulb or LED strip based on agent state -- red for errors, yellow for waiting on input, green for busy, off when idle:\n\n```yaml\nautomation:\n  - alias: OpenCode busy light\n    triggers:\n      - trigger: webhook\n        webhook_id: your_webhook_id\n        allowed_methods:\n          - POST\n        local_only: false\n    actions:\n      - choose:\n          - conditions: \"{{ trigger.json.state == 'busy' }}\"\n            sequence:\n              - action: light.turn_on\n                target:\n                  entity_id: light.desk_led\n                data:\n                  color_name: green\n                  brightness: 128\n          - conditions: \"{{ trigger.json.state == 'waiting' }}\"\n            sequence:\n              - action: light.turn_on\n                target:\n                  entity_id: light.desk_led\n                data:\n                  color_name: yellow\n                  brightness: 200\n          - conditions: \"{{ trigger.json.state == 'error' }}\"\n            sequence:\n              - action: light.turn_on\n                target:\n                  entity_id: light.desk_led\n                data:\n                  color_name: red\n                  brightness: 255\n          - conditions: \"{{ trigger.json.state == 'idle' }}\"\n            sequence:\n              - action: light.turn_off\n                target:\n                  entity_id: light.desk_led\n```\n\n### Track agent status as a template sensor (with multi-session support)\n\nA [trigger-based template sensor](https://www.home-assistant.io/integrations/template/#trigger-based-template-sensors) gives you a rich entity with attributes and derived state logic. This version tracks multiple concurrent sessions -- one session going idle won't overwrite the state of another still-busy session:\n\n```yaml\ntemplate:\n  - trigger:\n      - trigger: webhook\n        webhook_id: your_webhook_id\n        allowed_methods:\n          - POST\n        local_only: true\n      - trigger: event\n        event_type: timer.finished\n        event_data:\n          entity_id: timer.opencode_agent_state\n    sensor:\n      - name: OpenCode Agent Status\n        unique_id: opencode_agent_status\n        device_class: enum\n        state: >\n          {%- if trigger.platform == 'event' -%}\n            idle\n          {%- else -%}\n            {%- set prev = this.attributes.get('sessions', {}) -%}\n            {%- set sid = trigger.json.sessionId | default('unknown') -%}\n            {%- set raw = trigger.json.state -%}\n            {%- set was_busy_long = raw == 'idle'\n                   and prev.get(sid, {}).get('state') == 'busy'\n                   and (trigger.json.durationMs | default(0) | int) >= 10000 -%}\n            {%- set effective = 'completed' if was_busy_long else raw -%}\n            {%- set ns = namespace(states=[]) -%}\n            {%- for k, v in prev.items() if k != sid and v.state != 'idle' -%}\n              {%- set ns.states = ns.states + [v.state] -%}\n            {%- endfor -%}\n            {%- if effective != 'idle' -%}\n              {%- set ns.states = ns.states + [effective] -%}\n            {%- endif -%}\n            {%- if ns.states | length == 0 -%}\n              {{ effective }}\n            {%- else -%}\n              {%- set prio = {'error': 0, 'waiting': 1, 'busy': 2, 'completed': 3} -%}\n              {%- set ns2 = namespace(best='idle', best_prio=99) -%}\n              {%- for s in ns.states -%}\n                {%- if prio.get(s, 50) < ns2.best_prio -%}\n                  {%- set ns2.best = s -%}\n                  {%- set ns2.best_prio = prio.get(s, 50) -%}\n                {%- endif -%}\n              {%- endfor -%}\n              {{ ns2.best }}\n            {%- endif -%}\n          {%- endif -%}\n        icon: >\n          {%- set icons = {\n            'busy': 'mdi:robot-outline',\n            'waiting': 'mdi:robot-confused-outline',\n            'error': 'mdi:robot-dead-outline',\n            'completed': 'mdi:robot-happy-outline',\n          } -%}\n          {{ icons.get(this.state, 'mdi:robot-off-outline') }}\n        attributes:\n          sessions: >\n            {%- if trigger.platform == 'event' -%}\n              {}\n            {%- else -%}\n              {%- set prev = this.attributes.get('sessions', {}) -%}\n              {%- set sid = trigger.json.sessionId | default('unknown') -%}\n              {%- set raw = trigger.json.state -%}\n              {%- set ns = namespace(sessions={}) -%}\n              {%- for k, v in prev.items() if k != sid and v.state != 'idle' -%}\n                {%- set ns.sessions = dict(ns.sessions, **{k: v}) -%}\n              {%- endfor -%}\n              {%- set was_busy_long = raw == 'idle'\n                     and prev.get(sid, {}).get('state') == 'busy'\n                     and (trigger.json.durationMs | default(0) | int) >= 10000 -%}\n              {%- set effective = 'completed' if was_busy_long else raw -%}\n              {%- if effective != 'idle' -%}\n                {%- set entry = {\n                  'state': effective,\n                  'hostname': trigger.json.hostname | default(''),\n                  'project': trigger.json.project | default(''),\n                } -%}\n                {%- set ns.sessions = dict(ns.sessions, **{sid: entry}) -%}\n              {%- endif -%}\n              {{ ns.sessions | to_json }}\n            {%- endif -%}\n          hostname: >\n            {%- if trigger.platform == 'webhook' -%}\n              {{ trigger.json.hostname }}\n            {%- else -%}\n              {{ this.attributes.get('hostname', '') }}\n            {%- endif -%}\n          project: >\n            {%- if trigger.platform == 'webhook' -%}\n              {{ trigger.json.project | default('') }}\n            {%- else -%}\n              {{ this.attributes.get('project', '') }}\n            {%- endif -%}\n          session_id: >\n            {%- if trigger.platform == 'webhook' -%}\n              {{ trigger.json.sessionId | default('') }}\n            {%- else -%}\n              {{ this.attributes.get('session_id', '') }}\n            {%- endif -%}\n          duration_ms: >\n            {%- if trigger.platform == 'webhook' -%}\n              {{ trigger.json.durationMs | default(none) }}\n            {%- else -%}\n              {{ this.attributes.get('duration_ms', none) }}\n            {%- endif -%}\n          waiting_reason: >\n            {%- if trigger.platform == 'webhook' and trigger.json.waiting is defined -%}\n              {{ trigger.json.waiting.reason | default(none) }}\n            {%- elif trigger.platform == 'webhook' -%}\n              {{ none }}\n            {%- else -%}\n              {{ this.attributes.get('waiting_reason', none) }}\n            {%- endif -%}\n          waiting_title: >\n            {%- if trigger.platform == 'webhook' and trigger.json.waiting is defined -%}\n              {{ trigger.json.waiting.title | default(none) }}\n            {%- elif trigger.platform == 'webhook' -%}\n              {{ none }}\n            {%- else -%}\n              {{ this.attributes.get('waiting_title', none) }}\n            {%- endif -%}\n          permission_id: >\n            {%- if trigger.platform == 'webhook' and trigger.json.waiting is defined -%}\n              {{ trigger.json.waiting.id | default(none) }}\n            {%- elif trigger.platform == 'webhook' -%}\n              {{ none }}\n            {%- else -%}\n              {{ this.attributes.get('permission_id', none) }}\n            {%- endif -%}\n          question_options: >\n            {%- if trigger.platform == 'webhook' and trigger.json.waiting is defined\n                  and trigger.json.waiting.questions is defined\n                  and trigger.json.waiting.questions | length > 0\n                  and trigger.json.waiting.questions[0].options is defined -%}\n              {{ trigger.json.waiting.questions[0].options | to_json }}\n            {%- elif trigger.platform == 'webhook' -%}\n              []\n            {%- else -%}\n              {{ this.attributes.get('question_options', []) | to_json }}\n            {%- endif -%}\n\ntimer:\n  opencode_agent_state:\n    name: OpenCode agent state auto-revert\n    duration: '00:00:05'\n\nautomation:\n  - alias: OpenCode agent state timer control\n    mode: restart\n    triggers:\n      - trigger: state\n        entity_id: sensor.opencode_agent_status\n    actions:\n      - if:\n          - condition: state\n            entity_id: sensor.opencode_agent_status\n            state: [error, completed]\n        then:\n          - action: timer.start\n            target:\n              entity_id: timer.opencode_agent_state\n        else:\n          - action: timer.cancel\n            target:\n              entity_id: timer.opencode_agent_state\n```\n\nThe aggregate state reflects the highest-priority active session (`error` > `waiting` > `busy` > `completed` > `idle`). The `sessions` attribute stores a dict of active sessions keyed by `sessionId`, each with `state`, `hostname`, and `project`.\n\nThe `completed` state is synthesized when the agent goes from `busy` → `idle` after at least 10 seconds -- a signal that a real task finished. The timer ensures transient states (`error`, `completed`) auto-revert to `idle` after 5 seconds. The `waiting_*` and `permission_id` attributes are cleared when a non-waiting webhook arrives, preventing stale values.\n\n### Actionable mobile notification when waiting for input\n\nGet a push notification with action buttons when the agent has been busy for a while (>30s) and then needs your input. This uses a **separate webhook** so it works independently of the sensor and correctly handles parallel sessions.\n\n**Plugin config** -- route `waiting` payloads to both the sensor and the notification webhook:\n\n```json\n{\n  \"webhookUrls\": {\n    \"default\": \"https://ha.local/api/webhook/opencode_agent_status\",\n    \"waiting\": [\n      \"https://ha.local/api/webhook/opencode_agent_status\",\n      \"https://ha.local/api/webhook/opencode_agent_notify\"\n    ]\n  }\n}\n```\n\nSince `webhookUrls[state]` overrides `default` entirely, the `waiting` entry must include the sensor webhook too.\n\n**HA automation** -- triggers on the notification webhook, reads all data from the payload:\n\n```yaml\ninput_text:\n  opencode_permission_response:\n    name: OpenCode Permission Response\n    initial: ''\n    max: 255\n\nautomation:\n  - alias: Notify when OpenCode needs input after long-running prompt\n    mode: parallel\n    max: 10\n    triggers:\n      - trigger: webhook\n        webhook_id: opencode_agent_notify\n        allowed_methods:\n          - POST\n        local_only: true\n    conditions:\n      - condition: template\n        value_template: >\n          {{ trigger.json.state == 'waiting'\n             and (trigger.json.durationMs | default(0) | int) >= 30000 }}\n    actions:\n      - variables:\n          waiting: '{{ trigger.json.waiting | default({}) }}'\n          waiting_reason: \"{{ waiting.reason | default('') }}\"\n          is_permission: \"{{ waiting_reason == 'permission' }}\"\n          is_question: \"{{ waiting_reason == 'question' }}\"\n          permission_id: \"{{ waiting.id | default('') }}\"\n          question_options: >\n            {%- if waiting.questions is defined\n                  and waiting.questions | length > 0\n                  and waiting.questions[0].options is defined -%}\n              {{ waiting.questions[0].options }}\n            {%- else -%}\n              []\n            {%- endif -%}\n          action_approve: \"{{ 'APPROVE_' ~ context.id }}\"\n          action_deny: \"{{ 'DENY_' ~ context.id }}\"\n          action_always: \"{{ 'ALWAYS_' ~ context.id }}\"\n      - variables:\n          notification_message: >\n            {{ trigger.json.project | default('unknown') }}\n            on {{ trigger.json.hostname | default('unknown') }}\n            {%- if waiting.title not in [none, ''] %}\n            — {{ waiting.title }}\n            {%- endif %}\n          question_actions: >\n            {%- set opts = question_options if question_options is list else [] -%}\n            {%- set ns = namespace(actions=[]) -%}\n            {%- for opt in opts[:10] -%}\n              {%- set ns.actions = ns.actions + [{\"action\": \"OPT_\" ~ loop.index0 ~ \"_\" ~ context.id, \"title\": opt.label}] -%}\n            {%- endfor -%}\n            {{ ns.actions }}\n      - choose:\n          - alias: Permission notification\n            conditions: '{{ is_permission }}'\n            sequence:\n              - action: notify.mobile_app_your_phone\n                data:\n                  title: opencode is waiting for input\n                  message: '{{ notification_message }}'\n                  data:\n                    push:\n                      interruption-level: time-sensitive\n                    actions:\n                      - action: '{{ action_approve }}'\n                        title: Approve\n                      - action: '{{ action_deny }}'\n                        title: Deny\n                        destructive: true\n                      - action: '{{ action_always }}'\n                        title: Always Allow\n              - wait_for_trigger:\n                  - trigger: event\n                    event_type: mobile_app_notification_action\n                    event_data:\n                      action: '{{ action_approve }}'\n                  - trigger: event\n                    event_type: mobile_app_notification_action\n                    event_data:\n                      action: '{{ action_deny }}'\n                  - trigger: event\n                    event_type: mobile_app_notification_action\n                    event_data:\n                      action: '{{ action_always }}'\n                timeout: '00:02:00'\n                continue_on_timeout: true\n              - choose:\n                  - alias: Approve\n                    conditions: '{{ wait.trigger is defined and wait.trigger.event.data.action == action_approve }}'\n                    sequence:\n                      - action: input_text.set_value\n                        target:\n                          entity_id: input_text.opencode_permission_response\n                        data:\n                          value: '{{ permission_id }}:allow'\n                  - alias: Always Allow\n                    conditions: '{{ wait.trigger is defined and wait.trigger.event.data.action == action_always }}'\n                    sequence:\n                      - action: input_text.set_value\n                        target:\n                          entity_id: input_text.opencode_permission_response\n                        data:\n                          value: '{{ permission_id }}:always'\n                  - alias: Deny\n                    conditions: '{{ wait.trigger is defined and wait.trigger.event.data.action == action_deny }}'\n                    sequence:\n                      - action: input_text.set_value\n                        target:\n                          entity_id: input_text.opencode_permission_response\n                        data:\n                          value: '{{ permission_id }}:deny'\n          - alias: Question notification with options\n            conditions: '{{ is_question and question_actions | length > 0 }}'\n            sequence:\n              - action: notify.mobile_app_your_phone\n                data:\n                  title: opencode is waiting for input\n                  message: '{{ notification_message }}'\n                  data:\n                    push:\n                      interruption-level: time-sensitive\n                    actions: '{{ question_actions }}'\n        default:\n          - action: notify.mobile_app_your_phone\n            data:\n              title: opencode is waiting for input\n              message: '{{ notification_message }}'\n              data:\n                push:\n                  interruption-level: time-sensitive\n```\n\nKey design choices:\n\n- **Dedicated webhook** (`opencode_agent_notify`) -- the automation triggers directly from the webhook payload, not from sensor state changes. This avoids race conditions when multiple sessions are active and ensures `durationMs` is accurate per-session.\n- **`mode: parallel`** -- multiple concurrent sessions can each have their own notification in-flight.\n- **`durationMs >= 30000`** -- uses the plugin's per-session busy timer instead of HA's `last_changed`, which can be inaccurate when sessions overlap.\n- **Permission reply** -- tapping Approve/Deny writes to `input_text.opencode_permission_response` using the format `<permissionId>:<response>`, which the plugin polls for.\n- **Question actions** -- dynamically builds notification buttons from the question's options (up to 10, the iOS limit). Tapping one writes `question:<requestId>:<optionIndex>` to the same entity; the plugin resolves the index back to the option label and replies to OpenCode.\n\n### Session duration tracking\n\nLog how long each agent interaction took. The `durationMs` field is included in `idle`, `waiting`, and `error` payloads, measuring the time since the session last became `busy`:\n\n```yaml\nautomation:\n  - alias: OpenCode session duration\n    triggers:\n      - trigger: webhook\n        webhook_id: your_webhook_id\n        allowed_methods:\n          - POST\n        local_only: false\n    conditions:\n      - condition: template\n        value_template: '{{ trigger.json.durationMs is defined }}'\n    actions:\n      - action: input_number.set_value\n        target:\n          entity_id: input_number.opencode_last_duration_seconds\n        data:\n          value: '{{ (trigger.json.durationMs / 1000) | round(1) }}'\n```\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}