{"_id":"@effected/cli","_rev":"12-dc94a1fe85497d7420780310b5b4f7c8","name":"@effected/cli","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@effected/cli","version":"0.1.0","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.1.0","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"3592f8c9a17ea28f2c0eae06a0c45a1f67ce2776","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.1.0.tgz","fileCount":11,"integrity":"sha512-ya6+/BfBzWvPBXOO9YgxSUy1VPTATMQCt4r903QMyrX9dVec0NWlo1BEMK2k5VM3h1Qb0nm/VmsSwBeS3/nD2w==","signatures":[{"sig":"MEQCICYJQFuFnP2ul00MjXN35eAkVT4F6Pk2aJ0knHUDNp4NAiBxQhKkyDpktOeZGQjPXQW5G70wYkACZhRuN5CuOKo4ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36990},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.1.0.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"spencerbeggs","email":"spencer@beg.gs"},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.1.0.tgz","_integrity":"sha512-ya6+/BfBzWvPBXOO9YgxSUy1VPTATMQCt4r903QMyrX9dVec0NWlo1BEMK2k5VM3h1Qb0nm/VmsSwBeS3/nD2w==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.0","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-beta.107","@effected/config-file":"^0.4.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0_1786716071201_0.8305752805867339","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@effected/cli","version":"0.2.0","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.2.0","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"51f38ccac85d50b3a9fbf9a826bc24e179a0816e","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.2.0.tgz","fileCount":11,"integrity":"sha512-0xs0slqpR04b05lIy22HN/eQG6J/THtAxPBfTJ0SSQ111j5Dvb7K1og3LNwH/RSk1/w3liPiBfS18UqBcSD0cg==","signatures":[{"sig":"MEUCIQCWYx2D3JWheJJNBBF7KsLjUmXuDEJhFdRi6er4llc+UAIgXRHptRoGI00krSucHtYgilDZ2v9f18I4ghsClfP5MCw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36994},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.2.0.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.2.0.tgz","_integrity":"sha512-0xs0slqpR04b05lIy22HN/eQG6J/THtAxPBfTJ0SSQ111j5Dvb7K1og3LNwH/RSk1/w3liPiBfS18UqBcSD0cg==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.0","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.109","@effected/config-file":"^0.5.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.0_1786936987836_0.046632729418107255","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@effected/cli","version":"0.3.0","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.3.0","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"3ce285172beca9b3e30500e18ec30da14eeb92c0","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.3.0.tgz","fileCount":11,"integrity":"sha512-ZWtCYGKCUyoxlGiMHvZ8/Zm3PrGg7Rxje7Ons7bbwfRqvGNAThCU74/CuhEjvEAOLPLw6EeP+yt640oCJy47hA==","signatures":[{"sig":"MEQCIBnGDj8JmFRcrjJ7dENveJErKwBOw/LD6+A/YRToEcdjAiAhe1wmCUi1nr8AkpK9A54xDOnjYBpMaq97uD5n7EZwLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36951},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.3.0.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.3.0.tgz","_integrity":"sha512-ZWtCYGKCUyoxlGiMHvZ8/Zm3PrGg7Rxje7Ons7bbwfRqvGNAThCU74/CuhEjvEAOLPLw6EeP+yt640oCJy47hA==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.1","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.8.1","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.112","@effected/config-file":"^0.6.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.0_1788629405765_0.030801058357022404","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@effected/cli","version":"0.3.1","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.3.1","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"8b12aa0932701858fdf09e657b670c2f5c240231","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.3.1.tgz","fileCount":11,"integrity":"sha512-MqXAnjTBzNzxeVDM8mFHeVgWnq5GHTPIKVelukzSwdocTHm685q1iuEKdutWG72C4q+ozO1TM120js08t8ByCg==","signatures":[{"sig":"MEYCIQDaLa3HuYX+iigLmwFdMZXE6b3JGG7akpuoiHsUXZ1BYQIhAJjE/LHCzW0uMYHdiR+/KX6Thzl0irP4jAwB1yafoOiw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36951},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.3.1.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.3.1.tgz","_integrity":"sha512-MqXAnjTBzNzxeVDM8mFHeVgWnq5GHTPIKVelukzSwdocTHm685q1iuEKdutWG72C4q+ozO1TM120js08t8ByCg==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.1","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.8.1","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.112","@effected/config-file":"^0.7.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.1_1788834706930_0.9476157912178886","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@effected/cli","version":"0.4.0","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.4.0","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"ca45cf6c30faa6456827cf353bc318c572f4a63b","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.4.0.tgz","fileCount":11,"integrity":"sha512-cuokCYLX/HemlZcb0vWB+uFz29Oz1Bf14S4DG3Nz6jdmP41Ur0QjGYdXDOUp80lJyqTZ23jALNApt8rzqGSmcA==","signatures":[{"sig":"MEUCIQCOqzm2GGWNHh/kgT+ACHEuZRS4CSbMEb7/tBxj/O1z7gIgFfOl/+eTfvBuU0mwoDAAZ7ZqQLKdafvvzQ+Bn5okvOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFTK4tAlEXmdmEjCiwm6lBm6zX32yL0Vxm0HvS0IPE8sAiEAt9oKVtiysoervuvaF0loDDzxe5IG973Ic7yJ0ufIIfg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36951},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.4.0.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.4.0.tgz","_integrity":"sha512-cuokCYLX/HemlZcb0vWB+uFz29Oz1Bf14S4DG3Nz6jdmP41Ur0QjGYdXDOUp80lJyqTZ23jALNApt8rzqGSmcA==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.1","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.8.2","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.115","@effected/config-file":"^0.8.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.4.0_1789233937331_0.9797703779755063","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@effected/cli","version":"0.4.1","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.4.1","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"cdc57d77bf9b30448dc35f6819b26325a5ef34ab","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.4.1.tgz","fileCount":11,"integrity":"sha512-DKN9YYNtT/qE6HNjGycgPo+XRnNCixLflOhIAF1wWCXdMmtZEObxDdgBkZazLumt1LVjmm57q5mh7otAz4QqoQ==","signatures":[{"sig":"MEQCIDx7jLl5WvTmtq7sh6G5QMxOxrHugYkEzo1upLMm9741AiAJjbnMU0arbPRphHKrtHdT2TuGUKeDm0wYldeDK52/eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBHx3Jg/HFSrbzszcCVuPewwzYcEaaZ7tJlapgpzWTDPAiBmFj+Dhi6zcJ67zgu/aLYDtkwRLt4dBp7gaTg1hG+WGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36951},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.4.1.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.4.1.tgz","_integrity":"sha512-DKN9YYNtT/qE6HNjGycgPo+XRnNCixLflOhIAF1wWCXdMmtZEObxDdgBkZazLumt1LVjmm57q5mh7otAz4QqoQ==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.1","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.8.2","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.115","@effected/config-file":"^0.9.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.4.1_1789268994176_0.029318437123172503","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@effected/cli","version":"0.5.0","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.5.0","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"a9b0daa91f2d8e2456746f46c8d9ace473201019","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.5.0.tgz","fileCount":11,"integrity":"sha512-K1DFr5Oyh1Ht3XpO8Y+9YPsxay0T9CdEBCrnSzj1Ezf8Z55RD5UAWLX0USMgmjSPpNSY9AisSKoRwyVj/QgToA==","signatures":[{"sig":"MEQCIB7gQpI0N7nAwdbDRn/zZ1kZpjzhSGR22/lnca1AyOY7AiA/kMSCTcqcu+KMhRO3jKUgBrFUl3caw+SHleGwU78v6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDcsa/+cMb2iUmAnuvuDMImBF6uswA/aVJowWOCwXiN9QIhAJq/KLVU4bYcrURjdf0TLSZ/477MC5sycZyqOqgJb56v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37696},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.5.0.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.5.0.tgz","_integrity":"sha512-K1DFr5Oyh1Ht3XpO8Y+9YPsxay0T9CdEBCrnSzj1Ezf8Z55RD5UAWLX0USMgmjSPpNSY9AisSKoRwyVj/QgToA==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.1","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.8.2","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.115","@effected/config-file":"^0.9.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.5.0_1789399948190_0.14956520132954831","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@effected/cli","version":"0.5.1","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.5.1","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"86e9cd47ee94d0a559f4d25d72217b67a4757409","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.5.1.tgz","fileCount":11,"integrity":"sha512-QMZHUhjs0haaYXGsnUcqkuYC2lTOUYbHxqRC/2QVPXQ8jVyblLwkqwAp+M6k8mjm0m4sCQ2vDGg/mw5TJN8AWQ==","signatures":[{"sig":"MEQCIG0rGr0ksUm3bM8hYTny+YzTKq/tuJmXLY6UWCujoklPAiBa9RMqN0YDTGpKcB84OR65H6SQQKuBmot2h76TLDwOOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDuFyk1EEE33psPIdd9HsrwpjoqpmikN3neL1lW+0uAAgIgDk8dB7NKNV6oFm+Ngyi4G1X1kOhVP7IHbq8CQ7eicGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37697},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.5.1.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.5.1.tgz","_integrity":"sha512-QMZHUhjs0haaYXGsnUcqkuYC2lTOUYbHxqRC/2QVPXQ8jVyblLwkqwAp+M6k8mjm0m4sCQ2vDGg/mw5TJN8AWQ==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.1","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.8.2","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.115","@effected/config-file":"^0.10.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.5.1_1789417374978_0.28465273001832614","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@effected/cli","version":"0.5.2","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.5.2","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"fe3c873ae9e3a3ddc96c3f32190fb1e32797710d","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.5.2.tgz","fileCount":11,"integrity":"sha512-3bcftULl/53zWF6/gGAWAjPXjmUMopj4qUeQa+ZrPoejM/FcYtqkWXepZQ/4/74Vr+i5PA849utph0YCrarPJQ==","signatures":[{"sig":"MEUCIQDDzHmiuu35PO+e4gmM44e2QfONxBIEAebxirljKN++NQIgV9DXLhB4KENBRnYG6ezk9yLhy0Ne/v4Et24gxnkZg50=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDRUumFrkWo39KX7OANCZzmbUUZNg7faBXzLotxRo0HxgIhAO1XxIOarTusdRMoOCGGGdp5VBHAiBpTZvAq7zkFS/B5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37697},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.5.2.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.5.2.tgz","_integrity":"sha512-3bcftULl/53zWF6/gGAWAjPXjmUMopj4qUeQa+ZrPoejM/FcYtqkWXepZQ/4/74Vr+i5PA849utph0YCrarPJQ==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.19.1","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.9.0","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.115","@effected/config-file":"^0.10.1"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.5.2_1789751393368_0.7331332653149669","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@effected/cli","version":"0.6.0","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.6.0","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"b05e944ff36aa2fd768f571cafc731281de4d563","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.6.0.tgz","fileCount":11,"integrity":"sha512-M0Us4QNJP2flvzzV+0XrjUjhBNGryJ+jV8ToUJ3UaVJgOYO4ihfNbiWg1L5PUT2w2XTSuun5KnNB3zi8f3pyGw==","signatures":[{"sig":"MEUCIBJDKW8iVu2fpySphPAsuiYGMB8C+tvbFv3N1Zzd9vJqAiEA1lGSX1McsM9ppQEEqU/LAJCyhg4x+6yLB7ymzi+dWVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICHyMElOuPdyGB55dtjIwXSWgDg6n1Hx5khJCz7ZA4dtAiAhxDOH6XoWA+d4mVu145xl4k3Z3Jp/dqMtsxgUUk9eLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37697},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.6.0.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.6.0.tgz","_integrity":"sha512-M0Us4QNJP2flvzzV+0XrjUjhBNGryJ+jV8ToUJ3UaVJgOYO4ihfNbiWg1L5PUT2w2XTSuun5KnNB3zi8f3pyGw==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.0.2","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.9.0","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.116","@effected/config-file":"^0.11.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.6.0_1789860784168_0.7430385917678604","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@effected/cli","version":"0.7.0","keywords":["effect","cli","logger","terminal"],"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","_id":"@effected/cli@0.7.0","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"69befa82eb908e05fb5cc1915e49bb3b99eb677f","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.7.0.tgz","fileCount":11,"integrity":"sha512-/yTkr4bAsufKJst56DpCJ6r6+EE8+JHWr5+DbhT6jpFTg+3q9CPUEIoElXy9bFwoaruG9MwLj/x4Sc1c1uTrKg==","signatures":[{"sig":"MEUCIQCgE6UJDXSPdWZiNp3Xbff55D4+DT66YdxvIY4/28Tr2gIgDWwG2TXeKPtw6KgoVAi6JNkPr6tpKIGmCLlZeT6Pqyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHbTMa8lB0xopKRcLMkeHwLlk/PFkytAeO2Zq+VPDnZ0AiEAqt5OxGu40xe3uo8HvyMcypghmV8bEzxbKxwVgOEEgNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37697},"type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.7.0.tgz","types":"./index.d.ts","engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.7.0.tgz","_integrity":"sha512-/yTkr4bAsufKJst56DpCJ6r6+EE8+JHWr5+DbhT6jpFTg+3q9CPUEIoElXy9bFwoaruG9MwLj/x4Sc1c1uTrKg==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.0.2","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"sideEffects":false,"_nodeVersion":"26.9.0","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.117","@effected/config-file":"^0.12.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_0.7.0_1790110676431_0.6272996687899137","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@effected/cli@0.8.0","bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"dist":{"shasum":"8f81a7a0a92bf1978495f6051bb4a4deed9facd6","tarball":"https://registry.npmjs.org/@effected/cli/-/cli-0.8.0.tgz","fileCount":18,"integrity":"sha512-WEmpLwexdrXv5H4Gzbr6X3+/srTQy7eFH+byGIFuQosJqIMhAGb3vQHvlcHlDNbizQ/yxGFiXCr3bE6YRFkhQw==","signatures":[{"sig":"MEUCIQCy+EBBNCS6pi5+PvJHIxoaerYy1d7VZJOsiaSVLqMQJgIgPQNYCHK4sffxxk2ZSgGWeKsOxvCxKBmFcNxHIFH2wyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCSFzguJf6l9KSjkE4kMND3olC/aXlmwkHFhFVUrXgwkQIgNH4NWLDs33SOP/qL94y+Emid/HBxnfEHLNf9LY7zOpw="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@effected%2fcli@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":70061},"name":"@effected/cli","type":"module","_from":"file:/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.8.0.tgz","types":"./index.d.ts","author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"engines":{"node":">=24.11.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","default":"./index.js"},"./testing":{"types":"./testing.d.ts","import":"./testing.js","default":"./testing.js"},"./package.json":"./package.json"},"license":"MIT","private":false,"version":"0.8.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd459f7-fb7c-449c-a622-207422c112b6"}},"homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","keywords":["effect","cli","logger","terminal"],"_resolved":"/home/runner/work/effected/effected/packages/cli/dist/prod/npm/pkg/effected-cli-0.8.0.tgz","_integrity":"sha512-WEmpLwexdrXv5H4Gzbr6X3+/srTQy7eFH+byGIFuQosJqIMhAGb3vQHvlcHlDNbizQ/yxGFiXCr3bE6YRFkhQw==","repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.1.0","description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","directories":{},"maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"sideEffects":false,"_nodeVersion":"26.10.0","_hasShrinkwrap":false,"peerDependencies":{"effect":"4.0.0-rc.117","@effected/config-file":"^0.12.0"},"peerDependenciesMeta":{"@effected/config-file":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.8.0_1790262425941_0.1717765572255383"}}},"time":{"created":"2026-08-14T14:01:10.979Z","modified":"2026-09-24T15:07:06.450Z","0.1.0":"2026-08-14T14:01:11.415Z","0.2.0":"2026-08-17T03:23:08.017Z","0.3.0":"2026-09-05T17:30:05.901Z","0.3.1":"2026-09-08T02:31:47.063Z","0.4.0":"2026-09-12T17:25:37.439Z","0.4.1":"2026-09-13T03:09:54.269Z","0.5.0":"2026-09-14T15:32:28.264Z","0.5.1":"2026-09-14T20:22:55.081Z","0.5.2":"2026-09-18T17:09:53.449Z","0.6.0":"2026-09-19T23:33:04.260Z","0.7.0":"2026-09-22T20:57:56.532Z","0.8.0":"2026-09-24T15:07:06.037Z"},"bugs":{"url":"https://github.com/spencerbeggs/effected/issues"},"author":{"url":"https://spencerbeg.gs","name":"C. Spencer Beggs","email":"spencer@beggs.codes"},"license":"MIT","homepage":"https://github.com/spencerbeggs/effected/tree/main/packages/cli#readme","keywords":["effect","cli","logger","terminal"],"repository":{"url":"git+https://github.com/spencerbeggs/effected.git","type":"git","directory":"packages/cli"},"description":"The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting, and schema-issue rendering","maintainers":[{"name":"spencerbeggs","email":"spencer@beg.gs"}],"readme":"# @effected/cli\n\n[![npm](https://img.shields.io/npm/v/@effected%2Fcli?label=npm&color=cb3837)](https://www.npmjs.com/package/@effected/cli)\n[![License: MIT](https://img.shields.io/badge/License-MIT-4caf50.svg)](https://opensource.org/licenses/MIT)\n[![Node.js %3E%3D24.11.0](https://img.shields.io/badge/Node.js-%3E%3D24.11.0-5fa04e.svg)](https://nodejs.org/)\n[![TypeScript 7.0](https://img.shields.io/badge/TypeScript-7.0-3178c6.svg)](https://www.typescriptlang.org/)\n\nThe boundary layer of a command-line program built on `effect/unstable/cli`: how output reaches a human, how a failure is reported, and how a schema issue becomes a sentence someone can act on. `CliLogger` renders log records as plain lines and routes diagnostics to stderr, reading the `Console` off the fiber so it needs no platform package and the stream split is actually testable. `CliRuntime.reportFailures` catches inside your program so a failure prints through *your* logger instead of Effect's default one on stdout, then re-fails with the exit code and the no-double-report mark; `CliRuntime.main` assembles a whole program — platform layer, a fresh `CliExit`, failure reporting, and the logger — in the one order that reports every failure well. `CliExit` lets a findings command (a linter that found problems, say) succeed with a non-zero exit code, with finalizers intact on any runtime. `CliColor` decides once, per the no-color.org rule, whether output carries ANSI colour, and hands core's own `CliOutput.Formatter` the same decision. `SchemaIssueRenderer` and `ConfigIssueRenderer` turn issue trees into `unknown key at groups.g.rulesetz`. The `./testing` subpath's `CliTest` spawns a built bin hermetically for a test that wants a real subprocess.\n\n> **Pre-release.** This package is part of the `@effected/*` kit, in pre-`1.0.0`\n> development against a single pinned Effect v4 prerelease. Packages graduate to\n> `1.0.0` once Effect `4.0.0` ships. To hold your own `effect` versions at\n> exactly the ones the kit is built and tested against, install\n> [`@effected/pnpm-plugin-effect`](https://www.npmjs.com/package/@effected/pnpm-plugin-effect).\n>\n> **Stability: unstable.** This package's API surface is not yet considered\n> complete and may change across `0.x` releases. Pin an exact version — even a\n> package marked *stable* before `1.0.0` can introduce a breaking change by\n> accident, and an exact pin turns that into a type-check error rather than a\n> runtime surprise. Full policy: [release strategy](https://github.com/spencerbeggs/effected#release-strategy).\n\n## Why @effected/cli\n\nEverything here shares one property: **you only discover you needed it by shipping bad output to a person.** None of it fails a type-check, a test, or a review of the code in isolation.\n\nEffect's default logger emits `[00:33:56.619] INFO (#2): message`. That is correct for a service being scraped and wrong for a tool someone is watching — it turns a formatted table into noise — and nothing at the call site suggests it. A platform `runMain` then reports an unhandled failure through that *same* default logger, which sits outside the layers your program was provided, so a program that carefully installs a CLI logger still prints its failures in the format that logger exists to replace, on **stdout**, the one stream errors must not use. And a decode failure arrives as a structured tree when what a user needs is a sentence naming the key they got wrong; core does ship formatters for this, but they live on `SchemaIssue` rather than `SchemaError`, are named `makeFormatter*`, and are not referenced by `SchemaError.message` — two engineers searched for two rounds and concluded they did not exist.\n\nThis package is **not a CLI framework**. `effect/unstable/cli` owns argument parsing, flags, the command tree and help, and this package must never grow a second one.\n\n## Install\n\n```bash\nnpm install @effected/cli effect\n```\n\n```bash\npnpm add @effected/cli effect\n```\n\nRequires Node.js >=24.11.0. `effect` v4 is a peer dependency.\n\nAll `@effected/*` packages are ESM-only: the exports maps publish only `import` conditions, so `require()` — including tools that resolve in CJS mode — fails with Node's `ERR_PACKAGE_PATH_NOT_EXPORTED` rather than loading a CJS build that does not exist. Import from an ES module.\n\n`@effected/config-file` is an **optional** peer, needed only for `ConfigIssueRenderer`. It lives in its own module and is imported as a type, so nothing at runtime reaches for it.\n\n## Quick start\n\n```ts\nimport { CliLogger, CliRuntime } from \"@effected/cli\";\nimport { NodeRuntime } from \"@effect/platform-node\";\nimport { Console, Effect, Layer } from \"effect\";\n\ndeclare const AppLive: Layer.Layer<never>;\n\nconst program = Effect.gen(function* () {\n  yield* Effect.logInfo(\"building 3 packages\"); // a diagnostic, not the product\n  yield* Console.log(\"build.json contents\");    // the program's actual output\n  yield* Effect.logError(\"nothing to build\");\n});\n\n// Merged, not provided beneath: this way it also covers lines emitted during\n// layer construction, which is exactly where a startup failure prints.\nconst MainLive = Layer.mergeAll(AppLive, CliLogger.layer());\n\nNodeRuntime.runMain(program.pipe(CliRuntime.reportFailures(), Effect.provide(MainLive)));\n// stdout: build.json contents\n// stderr: building 3 packages\n// stderr: nothing to build\n// No timestamp, no level, no fiber id — and stdout carries only what Console.log wrote.\n```\n\nRendering a bad config into something actionable:\n\n```ts\nimport { CliRuntime, ConfigIssueRenderer } from \"@effected/cli\";\nimport { Effect } from \"effect\";\n\nconfigFile.load.pipe(\n  Effect.catchTag(\"ConfigValidationError\", (error) =>\n    Effect.gen(function* () {\n      yield* Effect.logError(String(error));\n      for (const line of ConfigIssueRenderer.render(error)) yield* Effect.logError(`  ${line}`);\n\n      // Re-fail, or the handler SUCCEEDS and a CLI exits 0 on invalid config.\n      // `reported` carries the exit code and the mark that stops the runtime\n      // printing the same failure a second time.\n      return yield* Effect.fail(CliRuntime.reported(error));\n    }),\n  ),\n);\n```\n\n```text\nConfigValidationError: Config validation failed at \"/home/me/.config/app/config.toml\"\n  unknown key at variables.keep.KEEP_ME\n  Missing key at variables.keep.file\n  Missing key at variables.keep.value\n  Missing key at variables.keep.resolved\n```\n\nPrint-then-`reported` is for a program run **without** `CliRuntime.main` or `reportFailures`. Under either, do not print the failure yourself: `reportFailures` renders every error except a `ShowHelp`, a `CliError.UserError` whose reported mark is `false` (one `Command.runWith` already printed, or one you marked with `reported`) and the `CliExit` sentinel, so it would print twice. Fail with the error and put the multi-line rendering in the `render` option instead — see \"Rendering a multi-line failure\" in the [advanced guide](https://effected.spencerbeg.gs/cli/advanced#rendering-a-multi-line-failure).\n\n## Putting it together\n\nA findings command — one whose non-zero exit reports a result rather than a\ncrash — wires `CliRuntime.main`, `CliExit.set` and `CliColor.formatterLayer`\naround an ordinary `effect/unstable/cli` command:\n\n```ts\nimport { CliColor, CliExit, CliRuntime } from \"@effected/cli\";\nimport { NodeRuntime, NodeServices } from \"@effect/platform-node\";\nimport { Console, Effect, Layer } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nconst findProblems = (strict: boolean): ReadonlyArray<string> =>\n  strict ? [\"missing changeset\", \"unpinned dependency\"] : [\"missing changeset\"];\n\nconst check = Command.make(\"check\", { strict: Flag.Boolean(\"strict\").pipe(Flag.withDefault(false)) }, (config) =>\n  Effect.gen(function* () {\n    const problems = findProblems(config.strict);\n    for (const problem of problems) yield* Console.log(problem);\n\n    // Findings, not a crash: the handler still SUCCEEDS. CliExit.set records\n    // the code CliRuntime.main turns into a real exit once the program ends.\n    if (problems.length > 0) yield* CliExit.set(1);\n  }),\n);\n\n// Satisfies Command.Environment (Command.run needs it) AND feeds Stdio to\n// CliColor.formatterLayer, so help text, parse errors and rendered output\n// never disagree about whether colour is on.\nconst Platform = CliColor.formatterLayer().pipe(Layer.provideMerge(NodeServices.layer));\n\n// CliRuntime.main provides a fresh CliExit, the platform layer inside failure\n// reporting, and the logger outermost — do NOT provide CliExit.layer here\n// yourself, or CliExit.set writes to a second, unread cell and `check`\n// silently exits 0.\nNodeRuntime.runMain(CliRuntime.main(Command.run(check, { version: \"1.0.0\" }), { platform: Platform }));\n```\n\n```bash\n$ node check.js\nmissing changeset\n$ echo $?\n1\n```\n\n## Features\n\n- `CliLogger.layer(options?)` — replaces the default logger with plain lines, routing every level to stderr by default. The threshold is the `stderrFrom` option (pass `\"Error\"` to restore the old split), compared ordinally, so a level added upstream lands on the right stream without a change here.\n- `CliLogger.make(options?)` — the `Logger` itself, for composing into a logger set you already have.\n- `CliRuntime.reportFailures(options?)` — reports through your logger, then re-fails with an exit code and the mark that stops the runtime reporting it a second time. Never renders a `CliError.ShowHelp` (already printed by `Command.runWith`) — a `ShowHelp` carrying errors is remapped to `usageExitCode` (default `64`).\n- `CliRuntime.main(program, { platform, logger?, ... })` — assembles a whole program in the one order that reports every failure well: a fresh `CliExit`, the platform layer inside failure reporting, and the logger outermost.\n- `CliRuntime.reported(error, exitCode?)` — marks an error you reported yourself, so the runtime stays quiet about it. A typed `Error` comes back as its own type (the marks are added in place) when it passes `instanceof Error` at runtime; any other value — including one that only satisfies `Error`'s shape structurally — is wrapped in a plain `Error`. A `CliError.UserError` marked with `reported` is treated as already printed and is not rendered — use a different error type if the program has not printed it. It keeps the code you pass: `reported(userError, 3)` exits `3`, not `usageExitCode`.\n- `CliExit.set(code)` — records a findings exit code from a successful program; the highest code set during the run wins. `CliExit.layer` mints a fresh cell per provide (`Layer.fresh`) — `CliRuntime.main` provides it for you.\n- `CliColor.enabled` — `Effect<boolean, never, Stdio>`, the no-color.org decision: off when stdout is not a terminal, or `NO_COLOR` is a non-empty value. `FORCE_COLOR` is ignored.\n- `CliColor.formatterLayer(overrides?)` — core's `CliOutput.Formatter`, coloured by the same decision as `CliColor.enabled`.\n- `SchemaIssueRenderer.render(issue)` — a `SchemaIssue` tree becomes one line per rejected value.\n- `ConfigIssueRenderer.render(error)` — the same rendering, reading `issue` off a `ConfigValidationError`.\n\nTwo behaviours worth knowing before you rely on them:\n\n- `CliLogger` honours `References.LogToStderr` as a **one-way** override — it can force everything to stderr, and can never move an error onto stdout.\n- `CliRuntime` keeps an exit code the error already carries via `Runtime.errorExitCode`; the `exitCode` option is a fallback, not an override. An interrupt is left alone.\n\n## Testing\n\n`@effected/cli/testing` is a separate entrypoint — importing `@effected/cli`\nnever pulls it in — for spawning a **built** bin hermetically and reading its\nexit code and streams as data:\n\n```ts\nimport { CliTest } from \"@effected/cli/testing\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { assert, describe, it } from \"@effect/vitest\";\nimport { Effect } from \"effect\";\n\ndescribe(\"check\", () => {\n  it.effect(\"exits 1 when it finds a problem\", () =>\n    Effect.gen(function* () {\n      const sandbox = yield* CliTest.sandbox({ path: process.env.PATH ?? \"\" });\n      const result = yield* CliTest.run(\"./dist/check.js\", [\"--strict\"], {\n        sandbox,\n        execPath: process.execPath,\n      });\n      assert.strictEqual(result.exitCode, 1);\n      assert.include(result.stdout, \"missing changeset\");\n    }).pipe(Effect.scoped, Effect.provide(NodeServices.layer)),\n  );\n});\n```\n\n`CliTest.sandbox({ path })` mints a scoped temp directory with a fresh `HOME`\nand `XDG_{CONFIG,DATA,STATE,CACHE}_HOME`, `NO_COLOR: \"1\"`, and the `path` you\npass as `PATH` — the host environment is never inherited. `CliTest.run` never\nleaves `stdin` as an open pipe: when you omit it, or pass `\"\"`, the child\nreceives an already-ended empty input, so a stdin-reading bin cannot hang the\ntest.\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}