{"_id":"workflow-ai","_rev":"92-6ab4905f822477cd786f7bf41069f267","name":"workflow-ai","dist-tags":{"latest":"1.16.0"},"versions":{"1.0.0":{"name":"workflow-ai","version":"1.0.0","_id":"workflow-ai@1.0.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"cf17561acbf4c16cd4da550a83095832a5b966a8","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.0.tgz","fileCount":28,"integrity":"sha512-tkvwzhSKmSTeCYY6eIJbglU4hvCuipGygj+P/2/wQa9EbVoR8JGFbmc3w4F2mxFDqvawpiumqwZkqcAxcFWPlA==","signatures":[{"sig":"MEQCIE9nqP6qQMJFVa1I3Bvj0O3VmyVf81eMVHXX0Sa0I2CdAiAU6p2MNDtI2PAwl26FHpkt532pNZ31pA7j5O61BCndoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186703},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"41d3f9ce86ec4ebeacc91cbef0297e7256d351bf","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.0_1772630388316_0.1193646559808792","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"workflow-ai","version":"1.0.1","_id":"workflow-ai@1.0.1","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"63a1de087e1dc33f003f6a3e618e9ba70882f4d6","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.1.tgz","fileCount":29,"integrity":"sha512-3k6uHUb7vcuMeejyB3JOyZW5sbOvJJ6ujVv6O+Q9aO67j2ftU/F6sJkrb53g1mSBkHJY4HxDpgfPlvv4/8Hqrg==","signatures":[{"sig":"MEUCICm8vsxmoElDL4YDw9IOO/7EaSfsW4UvVF1dNj8ZAbocAiEA8/EI1v8wcxs7J0GHtNGfr5w5K1kUsPySfQ6t/OPtfkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188804},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"97bcde7a16c44d726fee3573f062946f83918d6e","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.1_1772780009866_0.6751613041436635","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"workflow-ai","version":"1.0.2","_id":"workflow-ai@1.0.2","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"cf800f19975471946af8c534b27572004759d581","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.2.tgz","fileCount":29,"integrity":"sha512-qZGxdXKwBKpbB/fXR/zAP6R82wUvZm+MwMvuqSOc+D2sLNsoG4scWKbAkOtkkwVBub5Hobqlt5zWsJ5uwqV4Zw==","signatures":[{"sig":"MEYCIQDEydMJCMKbQaTrJW73llpocWr3F9XWVRTO+6F+oS7MmQIhAIB+o9kr60ggSFcOD7ERpbAAQHa55ieTjfKKZBJlIPSj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190169},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"c347ac948c0c3c23c6c764efcd79a571a27f8809","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.2_1772781120603_0.0771751456372074","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"workflow-ai","version":"1.0.3","_id":"workflow-ai@1.0.3","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"db328a669031dcdeb627381d9df764ae751cfb51","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.3.tgz","fileCount":29,"integrity":"sha512-rXhKM+gz1mxUJHe6dUmeeMsVrB5RhzS9iVeb/CNA+44jdUxcbei9ujmB+zFt+S5zgobCvxaF2NNh2QbEFfH9wQ==","signatures":[{"sig":"MEYCIQCmlcT5ygdCEsWefIAYP7ZM4J5/78YbA4MKZxZVn0oL/AIhANhsVoyuNrKuVAUenrBkjCbVqFA4nEt1mM+DInJz0n8C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191029},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"4fc0da70d73b707ded5e62a9d5ead90c368f33d2","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.3_1772792819174_0.8246601791876507","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"workflow-ai","version":"1.0.4","_id":"workflow-ai@1.0.4","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"605b4e5f188896604f8353a5cb262b5f623c1c4a","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.4.tgz","fileCount":29,"integrity":"sha512-acjRK7bCmTrA6Lg/dgPuuz7CqCnVgt2+6ABpvH1aBwUvRvnBsa+HEq19asDI4SpCv9HegDHYAy6w7bXg+vaJYQ==","signatures":[{"sig":"MEQCIA8PO2TqzRDjhSDHxIkCs0wQS1fmNh2ngupt+/ZAVidGAiAhFEdCVZI24M8uwatRbPEtwJqk9rdycGF+ZiMkp8Vl5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191159},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"e223befae1ae9ed1b5eb9b926ebba858a44a1343","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.4_1772887406868_0.4176768068156538","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"workflow-ai","version":"1.0.5","_id":"workflow-ai@1.0.5","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"24700fe8560a82c84c5c6d06ae60920027f70312","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.5.tgz","fileCount":29,"integrity":"sha512-ojhz/mrzVaiSCjNGFopYg+ladRn7V9aK5kGq03OMmrxWwzTX2STRI4tZ5ZULKzrRvp3oxszE7/qcK9LuofVj7Q==","signatures":[{"sig":"MEUCIQCKgyY0oq5Xa07oKFcx/9PopiE8kxebMJfnLEn1rYJwcwIgRF06Mu5TT3Uc387cxArkvJXkWXKFLya4fP9zQP4Xftw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190457},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8b6b15720f7a99bc9beab72dd09d622dc63dfeb5","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.5_1772889316208_0.7548511562411988","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"workflow-ai","version":"1.0.6","_id":"workflow-ai@1.0.6","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"6be601f8c693fb8d8469a2663450f77168b99639","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.6.tgz","fileCount":29,"integrity":"sha512-6py8ko9zqMC41W+cLxV8RLxNw1W0Ak/TM3u/elLcVrJ68xmDwTnahh3u1wwLsvPH6XEWhzVVAfDon8/dipW1WQ==","signatures":[{"sig":"MEYCIQCjAr3vRk3t5WZkjUinVTbBK74iwG5Df6c57NvopvdiSwIhAIBTvjkoJA5oWaakpW2cTaVVGUPiLfwH9zeG+i00QH4Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191179},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"1726b0a93911014577e6b00c89a9ec75e5961f77","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.6_1772892538980_0.4573804559635528","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"workflow-ai","version":"1.0.7","_id":"workflow-ai@1.0.7","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"3e187da7308eaab6a5a0bdbddfbe70991fa9dbb7","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.7.tgz","fileCount":29,"integrity":"sha512-TkK73OonDK/Tr67R/OIL8uK4P40xvF/BEgOR0wT5mbppHOVsPOzLYy/rk2FbqJfv6A13zU/XzZCeKyflPMq/kw==","signatures":[{"sig":"MEUCIGHc/8G84nZZ7OlzqA4IfGws34cMrdPJVZHpU8RxXx5tAiEA/qgEBOjYlZnPVT2hm5mWBG8zx9I9wRh5pAuOXrOk/js=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192246},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9f6c44e77337686ebb539e32ff8bc930bcb113db","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.7_1772895932821_0.32308804882358233","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"workflow-ai","version":"1.0.8","_id":"workflow-ai@1.0.8","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"199ad0021fbeb4c57b57ce6d3eb224462a8bb556","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.8.tgz","fileCount":29,"integrity":"sha512-g+CAiF+rZqH8Smyb8sWwCgII736dvr3VdjsmxIiWBIDroswXbNqsBMxtblPA6HtFG79DLtntuV9AyG0EJhIjIQ==","signatures":[{"sig":"MEUCIERvSvaeV9kulQvQFiJ1pjAqm8YQ2/VUl/QaZqY/V4E0AiEA3GfXCldcBd6zMnojc8KK9Ht0tkjtkVh0k0vliutRWgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191336},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"25fe94dcf8bce88ea213b2e7323f6ae3a48af0fe","scripts":{"test":"node --test src/tests/*.test.mjs"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.8_1772904234437_0.21466874476801334","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"workflow-ai","version":"1.0.9","_id":"workflow-ai@1.0.9","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"946d3c02e3077ccaea62bfb4fcd3f8bf38a7dd1f","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.9.tgz","fileCount":29,"integrity":"sha512-7bb4yp/8XMilsFlvUrthcLseGqUCKIDx/Lup9OUz95qwzzD/keB7I32E4RwhPKTOhqF+sSdEZWP+zjMNA8MlfQ==","signatures":[{"sig":"MEYCIQChzikUoOE9lI64T9zB33VLF4tZxcbtT0YpoL1CenqG8QIhAN8XCwZk1bP9EC7R5MSv8vLvjP7JXeYWZgWRgXhTcFdF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193107},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"0b292c9775c91e7823ac83a58d10712850b01800","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.9_1772955332269_0.6983732033865244","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"workflow-ai","version":"1.0.10","_id":"workflow-ai@1.0.10","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"08d63ab68f0c0589f4030839f3575b8a3f1ec361","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.10.tgz","fileCount":29,"integrity":"sha512-DAk+5F0qoNyhFKaUgzvKuOQ+L5ThaIpcJAcAdoUrihZxjuqIOgnWxX13QcFm86mPzyxCWtqtUjsEoW1kHdy7Xw==","signatures":[{"sig":"MEUCIEFhgYwdYToke1TyVHvFnIq1LlRZvBinZEuoemeS522FAiEAlbd6MRwf6hKDmlRduR7Ic5in3sk120796MZDD+FCb0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194983},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"34bdabdfb89034d37e5981e001b1b2e59e446919","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.10_1772966450602_0.634993555805228","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"workflow-ai","version":"1.0.11","_id":"workflow-ai@1.0.11","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"cc40d78597531b85271784f0012f1d1fba668602","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.11.tgz","fileCount":29,"integrity":"sha512-3nFT2Lz2R6wPJVJd2tHF6/+PDy32JOWEgQaw6xBUur159DKtcwG78LKojt/OhGvOSnGtgXErRotBChI1wiTb0Q==","signatures":[{"sig":"MEQCICvsgWN5QevDRkq9G8p/yIWSDnwbHcqHvnG+xRm/2f3YAiAlyGTNPX4GBCZQDY4favD3V/YNV8FfxMn4HCe4bJqIhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206914},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"87cfb8bb8cab3dc0dbc819b1c39caaf34931ed08","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.11_1772977825073_0.9298837967919147","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"workflow-ai","version":"1.0.12","_id":"workflow-ai@1.0.12","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"75d79b1afcec4cf689ef10d8c4632a6c5f9dbe53","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.12.tgz","fileCount":29,"integrity":"sha512-RH4ewu+zz3UnPBSpe+DnwdMX8d+CGwnoSTjYTvJ1/tVJRVZP85gczvaku216XId6sVT3EMjDFjKgH79CFUk+aA==","signatures":[{"sig":"MEUCIBZl1HLQTDWpk4GdSx5t5eDiPqAIlVKm46E0VA2JEwquAiEAvLFovXMsuBjsVJj43kF7BB++Htf+Ym2e2x49NRGKNOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207732},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"fc31fc80e122dd5d302f34732581582331d68fac","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.12_1772997480181_0.40031135268584817","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"workflow-ai","version":"1.0.13","_id":"workflow-ai@1.0.13","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"92b607c4f2b6043b3e17aae3fa31d6e9b24128d7","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.13.tgz","fileCount":29,"integrity":"sha512-q7BIeOiXCu8a3S1QULCgzN9fMVFj4dJO5j7QIeeF6akN0XFdqe3a6asE+/VEvdOjSMI6tfLxZhjO83qYbxorJg==","signatures":[{"sig":"MEUCIQCsDaD/YnNPhsEgImeXODlILO4QJMjdd/IlSjBf7KmaWAIgVcTuD0FliL9rq0ShM4We/TlTHeupQe+sFzyu8IdAPfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207746},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"db664a1fea491bbf501921da12d5eecf36eccb63","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.13_1773040278726_0.5970228277859952","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"workflow-ai","version":"1.0.14","_id":"workflow-ai@1.0.14","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"2efd527815af9eeb6dd8af094fcde981db3d572d","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.14.tgz","fileCount":29,"integrity":"sha512-a1kTCcl7cItpSFJuw9SvFqYTfAXmF0spcVcaFTjBr37TOpDADuttkUngpiVYrOucpDLBdpn5ySxqaApeQXSh0Q==","signatures":[{"sig":"MEUCIFFViRUCg304tCSSHqM3zUre2yxeUV9IfZrN4CHduMEbAiEAlaIhHCWIlq+WdD2HtyPG0wk/QjHBVnszFRqXOmFFrmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207747},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"3ddef49c156b15da2ce7ddcd24a8d88c07253bfa","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.14_1773124414475_0.8791131595734014","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"workflow-ai","version":"1.0.15","_id":"workflow-ai@1.0.15","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"d618fa6717369346c9ad51fced6b1831c846f886","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.15.tgz","fileCount":29,"integrity":"sha512-znPz64zfQEO3kTQlqS7N6RyZwosFkYIbYGPTLGqg8Ut/sms/CHu3oS5BIk/SVlvOxVDSF4cpFWWxwWZusAEJrA==","signatures":[{"sig":"MEUCIQDBBtX2FMDxKHUte1FxvLT3qFyHQpUjRnYb0YIqpghh9AIgb+gUy+fnSMXCDGcvSy+aC2S00CaZVY68bh5HqZhXD1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208164},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"34ee082c1e6b09cb6cc5921c04fcc080ef5fe91e","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.15_1773127593505_0.007811058954929839","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"workflow-ai","version":"1.0.16","_id":"workflow-ai@1.0.16","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"bb9f42bbcd24ba848b27b58f5281f4a610698e71","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.16.tgz","fileCount":29,"integrity":"sha512-xYJU0foAI60MpBSUEjKDFeCkWO8aF+knbnPDhNsM35nKgg63zN4eraIdHfk9FmRmJFZHP1Ur8QT+fCBBf3LvTA==","signatures":[{"sig":"MEQCIAxtKAnbZUUGMP5RR7937rXgqdW0NNYuOQGcPQV9XcTgAiAC8/WQ5mFhZVpueyybjpb2EP1HIIFjr7miLtdhHeqvBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208340},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"1c526e430f622ee0213ec862e0f60d78e4407b67","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.16_1773150857438_0.006858296154875099","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"workflow-ai","version":"1.0.17","_id":"workflow-ai@1.0.17","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"a3f96623b77c7a2cba7d7b9963f15b259db05400","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.17.tgz","fileCount":29,"integrity":"sha512-Jdv8VI4seRRDJd878quP2UTqHj5Iu9NI0odEW+j6BgH8gZExE/i31r93KyFnM4xGN7TPeIhBMHkTRtXLSwPXwg==","signatures":[{"sig":"MEYCIQC4n/LrWfLw8epgi9dpZVSpokNAvokfYV2GImvMRBZagAIhAMuXorPILvGemPPXwFG2tyHIffZ5WeXb2C5vB6wjLeba","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208378},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8bd72cbdacbeefe61dda6b61a3b525bb2c3df738","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.17_1773163160339_0.3543896740740584","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"workflow-ai","version":"1.0.18","_id":"workflow-ai@1.0.18","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"9db281773ba59bdb9bec00394355b2b6af7b5f39","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.18.tgz","fileCount":29,"integrity":"sha512-ccO4zv6nJggsfXCn7IpzAv0pWDdyRC+czNBwjTlDk8t8+2F09be6iz2pOgJTVdApjezNsiLz+/8moGmZpbkQvg==","signatures":[{"sig":"MEQCIFke8RUmRk9yf7zpmAoainWtP64HABwPaCezFmMV2J0gAiBvf4Z6GkxV4PkA3j0HLxGY/MvMoTP1B+DbtQeUmtxOsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208326},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"6c4cddb894757fba265534b416cadd0c7bcec2d8","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.18_1773200709305_0.37138470256415945","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"workflow-ai","version":"1.0.19","_id":"workflow-ai@1.0.19","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"fba1ea0fc6afa7fa7aa57140ae84c84b9be8c5e6","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.19.tgz","fileCount":29,"integrity":"sha512-HzPWvQU3E+FvC74V+88JoLpjEgbhRo6ChyQlo1Iwq8sd7lpTSfjn0pncRnhXffIiL0o9yemLzpA/DN9Ej7dgVA==","signatures":[{"sig":"MEUCIFGqsK/8jvt9Z+jy2uyWWNMS8ycYt7ZXPQVwz+wKtfcNAiEAmlLDNG7MkAbYe79F9KaRdcyYIWVW7QTwyjkrXE9u/F0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208365},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"6e8a916eaf42c5f1795fa9e4a0b7f1d56664b7c6","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.19_1773201122794_0.1766785812687981","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"workflow-ai","version":"1.0.20","_id":"workflow-ai@1.0.20","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"3d02c32f24fbe5c664f6888d4289e294b061cd1a","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.20.tgz","fileCount":30,"integrity":"sha512-A4DEhamhlNHlDyosJ189hHbUp2eKkVWxLvkdKPQQU2LCjMsJqzW6Mla2Q2aL6XBIE9518mDzbjZcjaZcyCpjnA==","signatures":[{"sig":"MEUCIDBJlvsXHeR/Qj/d+aSNGmxalJycXUd3Fwv/RjXOquT8AiEAshFrXbwSYUhiVYxiQ2k+LlOf/wn4aW63pMKSI6m0vQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216808},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"148c8ae5ab97518874d8bb0932beb3c8255d38de","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.20_1773211209503_0.032678069895459405","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"workflow-ai","version":"1.0.21","_id":"workflow-ai@1.0.21","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"a80b6680f6a83282ce42079f8576344f4a3033c8","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.21.tgz","fileCount":30,"integrity":"sha512-FW7R+Gv3+c5Z3Ikk5IvBFRrgj6oklQ+OAScJ5BdRSWI1Tg+tlPwYTXOCClnDxkcC4cEYwjsYSrNMb4u3y3Bl6A==","signatures":[{"sig":"MEUCIQCAd/l0f33mI3gyRVCN/rH96C1UIjn1pDn6Im9wAo4mYgIgG/MqniZQgzVQKVAwQuXuWOlHq/LbmRquQqhl8MGpqv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217145},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7faa4158e287aaa3e56ed184b821326d88294dcf","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.21_1773216861960_0.672525020505655","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"workflow-ai","version":"1.0.22","_id":"workflow-ai@1.0.22","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"30c35c66f7f2e7c2436d72b847065bb86aec99c1","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.22.tgz","fileCount":30,"integrity":"sha512-zdqEJQIIgWNCd1k3tSQ0QWesGpVNvC070zyUdOxTdn/sXDPAFWYgV3BzBny4ODc8yb3vcfk6p81BjLvgWLul5g==","signatures":[{"sig":"MEYCIQCuj91Cy0/9DvEUgPrmoZDa2UzAVWXSlqQNDKcowWTuFQIhAIfYNmj25y9ZcXc0MWzhiL9tDE1ahxou9JdZd/mHfB/F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217703},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"bb61cd49c0d97b4ef4b133eccff3a9c45bb9952d","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.22_1773219692561_0.510828221876064","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"workflow-ai","version":"1.0.23","_id":"workflow-ai@1.0.23","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"04100ee754892d4bf038e66c4f1434cf1e2270a8","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.23.tgz","fileCount":30,"integrity":"sha512-fmBXVFDAU1St+/PBj44luD6jYLYaZp8+MHaD1rHuSw02IYtPWOJTg+wvqFlkuyUVqztMcejTmLVRj8yY4s3pdg==","signatures":[{"sig":"MEUCIQCT7eRTAMoNwLdRprhGViceLfsoL9zircXCVWO7YjfjRQIgD2sY0lI8bi5h7IDrArJhCne98EKc08vpuEIzHHe0NDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218100},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"c097e049af301a784e0e39b51ccf1a4a540b7653","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.23_1773247208946_0.7123245323255409","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"workflow-ai","version":"1.0.24","_id":"workflow-ai@1.0.24","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"aabbd7e41a1bfd5a1abcdc5ac39acfc4be665b03","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.24.tgz","fileCount":31,"integrity":"sha512-wN10XTJ07l3hwUKZLA6N/PHO4HnHlQO6scwjQ//9tSgA2xshotVcwuyZmRprAqOEONwgK8y33C9RczMKdeRLUQ==","signatures":[{"sig":"MEUCIHsiXWDgT5SbG5ponBZAiPWBbJRaOTHulyRPzp5NFsLhAiEAtvsJMHGHm1iEPChlr3ysmOAuhMON9renW7yjHG1mg80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224859},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"98d7bd478849fe45b1a0cb5606957bcdec42b566","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.24_1773511288070_0.959053644856062","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"workflow-ai","version":"1.0.25","_id":"workflow-ai@1.0.25","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"01081eb7e43ceec85cb02fc70f76ea681ef22376","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.25.tgz","fileCount":31,"integrity":"sha512-tq/BA3YJ8+btTc+hGDw3UN8MNxiydB57+eLjstuw8TvBefbZ6iY3XThlMAqmA1AAhfyWBndoGP26yV4IXoqe7g==","signatures":[{"sig":"MEUCIGU153vmpPIK2/Ek4vbRfiK1K5laTWS8H0rmvKyozdYfAiEAkZkNJxQQ9L0+eQc7psrjth/IIfLsDGfvB0gpz8aXQYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224889},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"fec6c97e89cd051f7ae91f9e8847efe168efc43d","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.25_1773583877217_0.3558127762487744","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"workflow-ai","version":"1.0.26","_id":"workflow-ai@1.0.26","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"a5e486fc5f31d8e58ef3a1b36eb2a14d9b047f13","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.26.tgz","fileCount":32,"integrity":"sha512-A7DG0v22Ha7kVEJuIYKJd/7qevvyD8L8uIUmnOFUCZenCN//mQh4c7vsAOloppxXDkoa88PuMffG7P0s42E+Cw==","signatures":[{"sig":"MEYCIQD7FGYsHI/XgjgyyIET5n06d7pFfFPCqfWlEftqaSUXhQIhALKCIawru+zyMP7kJ0/71L2syQp41+OvI1dCOYrrS6PT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233450},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8b28ecf9ee156a175205480cdcd6abbe72083a28","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.26_1773641941728_0.45102544648312004","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"workflow-ai","version":"1.0.27","_id":"workflow-ai@1.0.27","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"89da6d345f02664deb5fa48ef7d2d4295fb5b6ef","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.27.tgz","fileCount":34,"integrity":"sha512-yMY1K7TL26MaFnqCtmOyjQHdKWBqHoRvPZL6b1NOpWNeRKEqHc98BBsDCh+rkQl3S4lcKkPawM60vkAdC2pICA==","signatures":[{"sig":"MEUCIQD39FL8GzfhnrMtBo30ZZJlb9XCxHn52+KuOgMnLV1IlAIgPnqB2f4fB4GHbhL12nNXBUXWhysI05Wp8vL/CFs8MPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":343950},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"aa08fe2fb5bf301b60b7a1036a8bb1bd392c6327","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.27_1773643901344_0.7631392223766984","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"workflow-ai","version":"1.0.28","_id":"workflow-ai@1.0.28","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"d84a8aa18e16ea7bd83da3ff3bffa89542502297","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.28.tgz","fileCount":34,"integrity":"sha512-nDg/h1eg6vOXRg+1XGdi6nTUcRWF8iy3uFK1NB0PnY67J/CSM1OTymMqVJ8BskksR9RMxeWrqxp2JXCFKntdqg==","signatures":[{"sig":"MEUCIQDPCNdFZl683v9eHUxtaPlmw95hOaRqnrbSbIDZObkXogIgaC1mXvviIIhRb3wSiFXNoEE7NqbzZqTG3S3ybTQHPjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345315},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f83c27f4bb6161772c706c62b160ceb2439de4e6","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.28_1773648164445_0.4936504398934387","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"workflow-ai","version":"1.0.29","_id":"workflow-ai@1.0.29","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"7ad3508ba19f1754a332a6a82c4bf76445c2bc1c","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.29.tgz","fileCount":34,"integrity":"sha512-Z56vs2EmSnjvBQ8xLcRaeJI8oI5O7yGgUGAAUNN2Ia0annQGPwAD/yHZtF03GWI44E4JGfhhxVmr5LPgsoxGVw==","signatures":[{"sig":"MEUCIQC2vyokC2NtDm+4yiiJvSq7afJcc40O99uoV8SJQhNy/QIgS5qoMotxy1PVkKncPWNee8Ssi0P9PRjqZpSKRzRGewU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345450},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"929825db8e4308aa090af65260094f5cba1e7f9e","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.29_1773839188826_0.7201048473656075","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"workflow-ai","version":"1.0.30","_id":"workflow-ai@1.0.30","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"628e451889a4d2b01be1d559c7c938fb77dcf8b3","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.30.tgz","fileCount":34,"integrity":"sha512-UER79r9uZSLAZPVonXzR2ZHiGSXuVtdye3w6GnzRrFUKDhzcR6jBnXL/23p8EJP3TuxBjerWKlFDcGVUPHjiWg==","signatures":[{"sig":"MEUCIQCscfWTn5yrx+OAhjIZ/89gCnJPNz7LrRYkaJQ1bQz2owIgTflZKKHUXdhEE3h/bFcAoE6IJdq11TKOShGA7J88TLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345665},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8e50d6a4564aa0eaa6286daa2d1242676ff82aca","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.30_1773839689817_0.7419862062825204","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"workflow-ai","version":"1.0.31","_id":"workflow-ai@1.0.31","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"6ea97422784bf2f5ec0783b5ecd3f2c02108fbdb","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.31.tgz","fileCount":34,"integrity":"sha512-o4ILq5zqXv4QKaBBxF5N5aVBBPgPzwGROc1O+DrnxqU80007zrhWU6nPO1pZKCdIFkglL3Rauiq/ns3JMSjtvQ==","signatures":[{"sig":"MEUCIAP4BzQTL95S4pNyTIfCflEKU3icumpXT2/800K+te2+AiEAqI5ihQRDakDUHmhJHB4fuGXqWSUMTCPoG5DBvEry51I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":346297},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"3dd5a09265eb3a3f5fa887c7e9b251ce8766857d","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.31_1773840772447_0.8171559588010011","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"workflow-ai","version":"1.0.32","_id":"workflow-ai@1.0.32","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"27671554ce233babdacb0fa14f2d0b2838ab4f92","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.32.tgz","fileCount":34,"integrity":"sha512-f7SsEMvhbccPr+uDmiGQI9ybCZGdqdFU8vm4GEC2gyRFT9EJdvxuu3xtno4PqWar9sv3U31QbeJaoT1ZH2VX9g==","signatures":[{"sig":"MEUCIEL8KRCZUXSlCvJYRb2nIEGeBG2KgPe+1K3LtW0qMd2tAiEAu9Bi3thkKaOT7PhAphks5B8B5M3TLoWD1lgMDC7y5WU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":346333},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"25a6c2ec5b1165b63c914eeb7f5797b2cac0006c","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.32_1773843347989_0.5931906717407827","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"workflow-ai","version":"1.0.33","_id":"workflow-ai@1.0.33","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"bedf2c5898fea7deaafbcc5e1eb64639bccc7f04","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.33.tgz","fileCount":51,"integrity":"sha512-DL6sOszUjJzjU58NIlNjZZPn8k//hK/6NcOUltfLty80g+vo1qQvETbVxT1H/aiipOjtibRZbFjF5S1zTQpqJw==","signatures":[{"sig":"MEUCIEjuiknwtVBjlqsvLI0rfJVGgc+fx55z1WZTwuLqfsY5AiEAjQx2W1pMMfzz1w2L9m6sHfGaUXhjOXkYxOYigd/i9A8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429367},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"378b82de085250d1c020eb56c63e2677643e6d8b","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.33_1773847929171_0.34962451508097714","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"workflow-ai","version":"1.0.34","_id":"workflow-ai@1.0.34","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"4c4c06672d7fc51928e21ff882ff42d373546b94","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.34.tgz","fileCount":51,"integrity":"sha512-gYejK2VY9lH0nPjcJAYBCrG+2/kHND5kbkpHlTgXiFO00xOfoPDOnDuTupt/ewun2lpD9WuiW0bEqiw6RwsTxQ==","signatures":[{"sig":"MEYCIQCfk0ZK1BKaPWIMVAX2W4+K38sOyPOs+9ZVeao8pknVZgIhAIsrQrGXhYNrGlqSd1+kGPjnIzLcqbfkj7ZpZsv64zLU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428787},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"a40fc7bc017aa797119e87b5293ce1016d14eb5a","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.34_1773848577649_0.16260531202602602","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"workflow-ai","version":"1.0.35","_id":"workflow-ai@1.0.35","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"21cbd903573c135769a580c787b9b0468525f3fe","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.35.tgz","fileCount":51,"integrity":"sha512-E33oeqKGZ72f2V/vfAF9Bq0MLXT5Th52E62PSy1wkzL2/gWctrY6zwBsWClXVFWzePiUV685X5y4K9FkSR5ezA==","signatures":[{"sig":"MEUCIQC3pOS/6lQAibRMLBhWtZ/7gcsImBIq4OJ1oC5aJUcLegIgZIZqy6sV+LaNqRKv2blXIQoynm7AgLt1m85bAk7EMjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428794},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8b72485f4965e57bc45fcc2635943d5f334331d3","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.35_1773848997065_0.692490832666498","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"name":"workflow-ai","version":"1.0.36","_id":"workflow-ai@1.0.36","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"4cfcafd0e2e43a4b4602567d95d1b53410cf6679","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.36.tgz","fileCount":51,"integrity":"sha512-GM4H5H+uNpHpB/fhbqQobe3lHDGg93wiDNqDbYn/g2pqfK5nQf4Muoz2ctkZNNEaFzhh28HaUf4GODRsWx9X1A==","signatures":[{"sig":"MEQCIBU5HjNgMsTeWisasbvtaNhYvcsWyBkjqvT+2GIfpDWFAiB+qgSu3qqPGVTV243Op6nLBnqniAng2ZXWGJI2XlK51g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429105},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"323f35ef5a88741c0317047ae11c928e2b8ed942","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.36_1773855846646_0.5607586334224386","host":"s3://npm-registry-packages-npm-production"}},"1.0.37":{"name":"workflow-ai","version":"1.0.37","_id":"workflow-ai@1.0.37","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"83c5494613413655762bd209ebc27b6355418448","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.37.tgz","fileCount":51,"integrity":"sha512-39M2+f05biyZ241nQx6fLvmpmJ6GTLoXf9qzeHzhM2jL47zdrxCwcqYc0HM/lTemG/39RKp3/MVKROJ7URb8jw==","signatures":[{"sig":"MEYCIQDE2P2QYkyjC2ILzaJqlMAE6WW33wK4sKuze4LTAyaXkQIhANDl60xBXSwu2n+KZyBqUP3bCh5HDaWDkA4r4vNdmeIz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429457},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7fe6d225c8ea25c8f836ff49eaa46a21cac35765","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.37_1773856746849_0.0901148722184657","host":"s3://npm-registry-packages-npm-production"}},"1.0.38":{"name":"workflow-ai","version":"1.0.38","_id":"workflow-ai@1.0.38","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"aecf7cb4c61cea20f6c0d8cad7540e71f4e33db8","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.38.tgz","fileCount":51,"integrity":"sha512-RZiNq3ConGw/wRkxBTAJElgf2XvP6W1jCSa4uKHMIF0oLIm8t7UcvGYmXEguVKh52Rh9GzUvGMgbSfjZS9MXIQ==","signatures":[{"sig":"MEUCIEU6LmnlsAt8/kWA2a8RbcbMCHcLr9C/JGNhG0nGvvc6AiEArI6p+kZ91MPyVO5Zp43nX69tMu4Rt3DA8PPnE5oPEEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429138},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"40daf8ab6ddd07f1a2b4ee8add02cc1e1f30bf9e","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.38_1773857021364_0.8055409249625218","host":"s3://npm-registry-packages-npm-production"}},"1.0.39":{"name":"workflow-ai","version":"1.0.39","_id":"workflow-ai@1.0.39","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"b2c4dddf5173c9e6788c710d936eec2c10ff87c3","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.39.tgz","fileCount":54,"integrity":"sha512-elEtqbqLGXyEYEgzGxxk8AsedpgA1Z00oHjq0Gexmiwd/qgesam7JyaXAbiQaKqow3+fiVVaRJ0h+mO5HKg37w==","signatures":[{"sig":"MEQCIEFOp8G88p/cp4UznP3z4OOIwETYSqFS2uTDtNci2dZ2AiATsEqMknDwhGEv4Dmg5kPLYcTUtRnm7zZJ3rtTsCXLVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441133},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"fd95871b6cf9d770626691ebcea0090b821bbc9d","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.39_1774003044855_0.7164108421719442","host":"s3://npm-registry-packages-npm-production"}},"1.0.40":{"name":"workflow-ai","version":"1.0.40","_id":"workflow-ai@1.0.40","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"f9dade8d322cf04e1392fe1033b9c6e13288e7f3","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.40.tgz","fileCount":54,"integrity":"sha512-khjKkHgCyQr4KXQPUz7MwcO/rHsRHoluxZ1dJpJk36oCQbvLVBP0XmDDLAUYyR17N0GHn9Hsmy8eRDlOyipXrA==","signatures":[{"sig":"MEYCIQDNfrwtujSjayq6Wx6hxAgoCuWyy7rbOW1bkdkZGOIGGQIhAKmhxJtw6j/xVF1a5CGfJYznPL959jJ8cis9GXkz44oV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":444243},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7f8c36125d41cf7d3e86a3b2e20f11c74ad7ebb9","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.40_1774173321823_0.2820261873750154","host":"s3://npm-registry-packages-npm-production"}},"1.0.41":{"name":"workflow-ai","version":"1.0.41","_id":"workflow-ai@1.0.41","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"714493055e2ce6d91f640d4770c7c3ce4036d510","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.41.tgz","fileCount":72,"integrity":"sha512-x3pgPh4MiQE9ZoM4hnv8Biiq0PxPwNYqep+Ot6hnyOpKYHJn3iNtfSvyPVNifSOJmtPtbGFDNhI68981TWwksg==","signatures":[{"sig":"MEQCIAvolZhee1FDh8dh2JKz6QhtptoGLuqGn62YRwMtU8K3AiAZtvHpQmdE/ubJvI4TPtrzlh6eqpFcadKovMRWrMW0sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":529993},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9f56139e20c4223d3e51c10630fbb5a1a4b49c5b","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.41_1774275554320_0.14681871794515833","host":"s3://npm-registry-packages-npm-production"}},"1.0.42":{"name":"workflow-ai","version":"1.0.42","_id":"workflow-ai@1.0.42","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"b083fc3037edf6bb9e15564a1b9e6c489d20ade6","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.42.tgz","fileCount":21,"integrity":"sha512-lWFUyzgfzqeQ9vXvKtyoFZcg38egdy3x31FpDzF/FuIgWAqm5kNuNEta8gMQgGwAK6EvDtTca2KodJjwEo+7Wg==","signatures":[{"sig":"MEUCIQDOVa37V9BPVBR6xGhv4TNJsSgxHr0YGdZ9q2/9upfq9wIgL90BgoC4CY98AQ4Va2FXqa0OtX3S/VIGHHE2qno+tA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259410},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b86c324896296eb424a58b230ac5f4ce78d64044","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.42_1774276840198_0.16139703904599378","host":"s3://npm-registry-packages-npm-production"}},"1.0.43":{"name":"workflow-ai","version":"1.0.43","_id":"workflow-ai@1.0.43","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"fc983f16eba4e0ac6e5d6e6ae6ba0ace58a5a1f0","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.43.tgz","fileCount":21,"integrity":"sha512-rhAhIfWwItDKA5lBf++Qtepjm3SU3SyrXWGiLJYl5ps1bcCb0jp3pDYyjsDlkizhSx9DIzvd92xmH2il838mUA==","signatures":[{"sig":"MEUCIBYkL+uVTz3WFXJiUzzY6cqFp0V+0CKSvLF02bTuTA3eAiEApQQv3MwgxBSawixrAR9hE13OtyDH/9UdqgEoAGD2hW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259622},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"fbd46b17efc9e132004b7b776325a3140e55d5cd","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.43_1774277225787_0.8754620614215047","host":"s3://npm-registry-packages-npm-production"}},"1.0.44":{"name":"workflow-ai","version":"1.0.44","_id":"workflow-ai@1.0.44","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"c5ae142aeee4a7e3502398cb8fb3682b781eed33","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.44.tgz","fileCount":21,"integrity":"sha512-7wv4eeiOrQBMMjVJGCFCZ1e+Zlfi1PaJMQSbNcGqx9yCFpjbZfXEjsHhXx/t2Qa8BhnQvgy47D6KqDEeW0W0gQ==","signatures":[{"sig":"MEQCIAjXMVCeMcv2JLta8FqSVYDyR/vbHhR3CRjtgSMXu9hDAiBZp+uGLhMkyit7dH7NQ3DIeM3R/iBskfGaXMdg59LFkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260057},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"6fa29650a3ebe7f0cabd212c60c9af457f329c5d","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.44_1774278514888_0.2365477753724452","host":"s3://npm-registry-packages-npm-production"}},"1.0.45":{"name":"workflow-ai","version":"1.0.45","_id":"workflow-ai@1.0.45","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"f0a764a4b73f472d2fc6516f779f6b838ef6134d","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.45.tgz","fileCount":21,"integrity":"sha512-XtNkWZe28+yHnFiTWxb9gpR+uYEwOOFfl2Gof9iVF3uwKC9QuG+xn/f+ns9U6QkC9qO0jmjjwlKi9nv4oUVckA==","signatures":[{"sig":"MEQCIFAPAUtTClGnCvd/2QhsykDzocBpv2ekx7YPQ5ImYW0eAiBLR6sPt4DElPP/ppu8H2LogSeOlaCJSL0yfzrHSepEaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264824},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"4e7a67f6f0fdd995853e0edcab4f74be25219b96","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.45_1774279408083_0.9023521123091955","host":"s3://npm-registry-packages-npm-production"}},"1.0.46":{"name":"workflow-ai","version":"1.0.46","_id":"workflow-ai@1.0.46","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"9cb4f356c7326eaa65c6c9e12d8b859f7749ea2d","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.46.tgz","fileCount":21,"integrity":"sha512-+9ls83ParH+6ukz2WzMTZIAbB880gO2GlBv3ediQ6MLgdxuOvX6SRIKjexKddJKwZIhn8pCL1luUke2Yjh/bug==","signatures":[{"sig":"MEQCIBXCySoilUTpbj2U/v9wyoOV0ZwCqORr7OTf4gbNRcfvAiAm9vILLnPGML6X+hTayGyFleDTxv5xZlvPowdg4xK4Lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264824},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"ed9ad6a8b224be888ee4e8a4d7465230f8e2408d","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.46_1774281556065_0.8196305227023122","host":"s3://npm-registry-packages-npm-production"}},"1.0.48":{"name":"workflow-ai","version":"1.0.48","_id":"workflow-ai@1.0.48","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"245698d60d1d388d7a1010c6e56e55b76e203383","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.48.tgz","fileCount":21,"integrity":"sha512-CGrsfKUFRHISR5OsO8NjHhCtDiHvrqa1WOFL3/HBm/IrOXm3ShZnLco3C5N/LZWLWN5X4V0b273VhXNYzR1neA==","signatures":[{"sig":"MEUCIQCeLi1gAlY+OqA/CI0xSSg4MWIqi/SI1Sr0yCFxgSjOEwIgVsToyTKmzbRph9MB9p1LTcKIurr2HtBPsuioho7r18w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266707},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"228b45af027ab490057b25d8e0819013ab889d55","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.48_1774417431229_0.3100964971612512","host":"s3://npm-registry-packages-npm-production"}},"1.0.49":{"name":"workflow-ai","version":"1.0.49","_id":"workflow-ai@1.0.49","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"efc5923dbbb62c912ddc100c5d6d8d390d2005f4","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.49.tgz","fileCount":21,"integrity":"sha512-D8QNPT4JdMe1eSbaGokkcxDjAq4cs0WEFTDLSq2D9GWkQ3w5CVgM/F/k5Klvn0pZjt0gQ8bDu4kcNRkx+A5Tvw==","signatures":[{"sig":"MEUCIG4blg+4KZbibSzSGkT7KoHkCodOPBUkddTcQDQoHJoLAiEApADdPH/LLaJH/WubEJSurGH8Sml8+NsSR7/5GiFh+t0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":267145},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"409ec93029ab68126856e48ce6d996530658f955","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.49_1774442852019_0.6730635171962187","host":"s3://npm-registry-packages-npm-production"}},"1.0.50":{"name":"workflow-ai","version":"1.0.50","_id":"workflow-ai@1.0.50","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"b3e75aadce77c3f9960f4c298ed523ace4314135","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.50.tgz","fileCount":21,"integrity":"sha512-jSjVqo8Dz93ChaAHL0ZCtUw6Bz36+vgC6aYnFnlMPLwhZXSCaVdJsiCaDfGkXMYtfj0h0QE3NLGHa4Y/M6EvBA==","signatures":[{"sig":"MEUCIHEkht3tX6mLjiySv/Abj4Rua4ceNiH86tb/+P4ikOaLAiEAk05827s98WkvLbIR0kIdcEzCw2Mh3dfvcmBxBlpwlsc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270834},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"c76c34f2d3a5eadfb40f8ab684d79a667367ba62","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.50_1774552821990_0.9470182771984577","host":"s3://npm-registry-packages-npm-production"}},"1.0.51":{"name":"workflow-ai","version":"1.0.51","_id":"workflow-ai@1.0.51","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"01ceaa3fa5cc68ae2baefc6dcdcb5b7e52123a4b","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.51.tgz","fileCount":21,"integrity":"sha512-f7IymkB/5pf+UriwDzyMgRNHcACdO3lvu8GwArdulJ+Sc6AjBmmIYaLJY4GC/DjrXGk9DCKrsJCrsQmoUD0mxA==","signatures":[{"sig":"MEUCID+Y/gPzXP8PwWeT6La2C7sWy1ZsizJcNGkmIhiaCe24AiEAx2DNxa/u7f8c0xPpEivdM8fTdn6EXXArZJcjsPcquJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275369},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"081758e040f2d4989588c2cb528632cfa3388e0e","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.51_1774688916679_0.23684053237264435","host":"s3://npm-registry-packages-npm-production"}},"1.0.52":{"name":"workflow-ai","version":"1.0.52","_id":"workflow-ai@1.0.52","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"a4e6fc3302164a01fd60aa37937bd4d99a710975","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.52.tgz","fileCount":21,"integrity":"sha512-A12QiTvcfxvPVYKu+3ki1pkdfvjALl+nWm7/9OiI4K9CaxLLqfxJe2a+L8Ipak1/FbkGHiVxp1tiTThEeKwtbw==","signatures":[{"sig":"MEUCIQDVx5W1NbL+ZXS+U7HmibDOkAszN66xXd7nKjhbbs8M1QIgJ/DWC23wQcApD7J4q41HZ/LQvQ+rjQFWAECjZY6aogo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274044},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"33d25546c5f0f4e6cd60c3b30feef546fb9ca7fb","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.52_1774711251969_0.5296769491317772","host":"s3://npm-registry-packages-npm-production"}},"1.0.53":{"name":"workflow-ai","version":"1.0.53","_id":"workflow-ai@1.0.53","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"774ca671ea95a8f9f6087cedfffc42bb0d7dc837","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.53.tgz","fileCount":21,"integrity":"sha512-AhJb+LNsWJ9R7xXuiELhim2yRkUPP6WeQrQE6FYNRc7Cv1A4fsa4ic5gUvcB3lWVKVn5pXRBgaL+YagqCjPrMw==","signatures":[{"sig":"MEQCIEwEJKT86gKdWHzPzti2x6TtuHI13bnCCG0npMHEiuLCAiAArK+V9njXKNG7MTqLyZpASLet+l2cWozM+uq3odw0XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276831},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"c0fe38180fd9fe8690628ff5c329e5e0da69ac1c","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.53_1774770248649_0.24186414226101882","host":"s3://npm-registry-packages-npm-production"}},"1.0.54":{"name":"workflow-ai","version":"1.0.54","_id":"workflow-ai@1.0.54","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"b87981e155c12eac94ccbbf345a00c5aa8b86bc7","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.54.tgz","fileCount":21,"integrity":"sha512-VaoPjzHZ6FXGVM7YJY46MYeysTcgWFLryjemavCUMEW3F49iI0bGwvFjIsObWguQFzLgDBpLBRMEWeQPksPB2A==","signatures":[{"sig":"MEUCIACoiuGL+YbGmyOECFa425Z8yCptCEZZb4GZIDkjtmgBAiEApoIySNVL2r30C+2mRoyUPwnKVvdiY9V0Wnv0Knzl9AU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277938},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"6b4428a71a6cccf97800072053a676910ea415bb","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.54_1774791638486_0.19906731781224263","host":"s3://npm-registry-packages-npm-production"}},"1.0.55":{"name":"workflow-ai","version":"1.0.55","_id":"workflow-ai@1.0.55","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"5693600e4867bff777f4cd8afc3831e3b4f5a9e2","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.55.tgz","fileCount":21,"integrity":"sha512-JQhHLz0kB8l6wcdx5FMPxR94XquyKGHXrKv7DcwIlsBn39iCv60BkgQp7ObXxqjYiYGbULTnvPVeVraOn+Ctdw==","signatures":[{"sig":"MEQCIDF/bwf2FjIcLLdXwNt1hisLZYZgHXWvGHJsjjVyM6NDAiAuan0q7ZGb+8p2vxoPJAfuxSORyH90KMpzVXRGZxZN7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271488},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"f621c0151970e38dbb3213a038c6cb7345a99a8b","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.55_1774852813989_0.5825499335595061","host":"s3://npm-registry-packages-npm-production"}},"1.0.56":{"name":"workflow-ai","version":"1.0.56","_id":"workflow-ai@1.0.56","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"755efa24af444b6843ad372db7765338bcd50073","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.56.tgz","fileCount":21,"integrity":"sha512-om4a+KjBdRWAgVkXkU9qgT01VR3AP4+5LGDdKAWYiydamzCwgpT6l0HDT2bYm/VBUbX7v25IQdlJKWp8sVX6Dg==","signatures":[{"sig":"MEQCIDFdlac3PxnIsVZFRODCBDMBIkgHazo8bCQ0+e5CVb+YAiBWuBebJdKG/QSF+8G/fRVi7tlQUogON3Db8rsgNxFRmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272432},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"923b34fc937adf95144338196bbb0369d74bd886","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.56_1774875515937_0.46395363118274346","host":"s3://npm-registry-packages-npm-production"}},"1.0.57":{"name":"workflow-ai","version":"1.0.57","_id":"workflow-ai@1.0.57","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"12882b912c11631b44ba1e8934bb5275219eddbe","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.57.tgz","fileCount":30,"integrity":"sha512-ghZRxw9+9B3XvmtDgZpDyoMMSwJ1uwIRoIwA7jzRSu6gxn5ZJaEAXWv0qLYHYxnrj8da9PCbBfSZtpx6idwLiA==","signatures":[{"sig":"MEUCIQDq7IzgmqDaSUSSNoZn3Pu4cQJLzod8cWwfFkAjn+uFqgIgcc8JNYLkrPWtIra20FQ0a0+QZEnHU+Jmc62QM54lb1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347035},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"2ab92104589d77c28005b12d9528f47ff6e26770","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.57_1775477573484_0.681590263950979","host":"s3://npm-registry-packages-npm-production"}},"1.0.58":{"name":"workflow-ai","version":"1.0.58","_id":"workflow-ai@1.0.58","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"473cc72771df04d4c26342e3b20e1efef8e4e44a","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.58.tgz","fileCount":33,"integrity":"sha512-p+8Re0TfuqkND8ruUVXO0Iiyw6ATlcFf+ygwMNtlxEKvgA1PTwFAdT0OjPcUELnJ3jWr3UG2qaRqH4ISPXtzXQ==","signatures":[{"sig":"MEYCIQC84q/fJC2JwwUlLGdgEFGqx/B+aOEI27cr/PyZClL2QQIhAL6NTCgod8uTrWQQSk0AToLiOyoSDrMtdDYY2Gky6msu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363588},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"d627488b0914e29d1c7421eec0abd740f29c2b65","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.58_1775492822095_0.20023726276571097","host":"s3://npm-registry-packages-npm-production"}},"1.0.59":{"name":"workflow-ai","version":"1.0.59","_id":"workflow-ai@1.0.59","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"dcf914b3300ecff5f37a7bf9fb8450c40a76cd0b","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.59.tgz","fileCount":33,"integrity":"sha512-ar54KuWqHW81F/hsrFfcvdA1vzuJqyZMO2YiCmGK99L4nibwzBFCI1aVFiwnMfrcqeoDvHW1QY6KpsZrDDzBPg==","signatures":[{"sig":"MEYCIQC+eURuokmJ4KyCxMdk/t+GWRuwX7tEdSBWVfq0wK+XfgIhAP+xvRaLA82EG9RumRL7iWRwl0d51/a6GfOAXfCBX4eR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":366527},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"70c19d0dd189f92829ab756dc96f6fb570425908","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.59_1775547821323_0.13293320446134227","host":"s3://npm-registry-packages-npm-production"}},"1.0.60":{"name":"workflow-ai","version":"1.0.60","_id":"workflow-ai@1.0.60","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"e01e7fcc8f27be1fe9a506398962e969682c8cf8","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.60.tgz","fileCount":19,"integrity":"sha512-33bULFu2rVkkzZAXWJUTkgV/qiThtu3XKkah5xiBBvuA0LUeaZeQdXOTD+5H+1ACRVwWna95447mbVI29kqpUg==","signatures":[{"sig":"MEYCIQDjyM8syVmR0Sc0nj8zGVdUUV3trj5qM8Ja5Ky02bWRoAIhAME25Y5L+pqQ7G7E/HI3irOTmCH8o3w+LzCb4gdMSyo8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245418},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"0546b90d84c96c5c7aac8966584a96dd59560029","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.60_1775552518236_0.27851046194405527","host":"s3://npm-registry-packages-npm-production"}},"1.0.61":{"name":"workflow-ai","version":"1.0.61","_id":"workflow-ai@1.0.61","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"02ef8b4d63a34228f92e684d4c38a7311286db9f","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.61.tgz","fileCount":19,"integrity":"sha512-mlAmwFx9k4GMcLknKLBUi/RiBhGrjwKg651MiuDa5PPvV19XJadUbKeLT4+2BUF3EjvdFsyHq5T5XfTGnr0aqA==","signatures":[{"sig":"MEUCIQCL00+EqdhflGqWZMk/SNdIiMCaGwiaLwTj/Cv3ZkndeQIgFO71sb9XhECFzcBOlrDiLAJyo5gsCq+8GAqBgBEtiik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247677},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"8ba85d4c8540feabe4c1ec344842372089131dfe","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.61_1776261903627_0.6766453234442957","host":"s3://npm-registry-packages-npm-production"}},"1.0.62":{"name":"workflow-ai","version":"1.0.62","_id":"workflow-ai@1.0.62","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"c357948deb956125894de7e20bf5785e7157cb91","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.62.tgz","fileCount":32,"integrity":"sha512-2jdR7wR3ZRdlKjEIXxYsk1YmJSqTKOIyZY0TiPLBnSWK5mcMYPEbfidt19nOFkIIwuCYK+R2sxhGlw+rl9rsSA==","signatures":[{"sig":"MEYCIQCQUT3ODBOPfNTicFBSPd7lcLXgvXUQtaHbqtbC+VOeJwIhAJUsieb8UihmGRc+Dk9wclnK7H/DwRajfU1R9fh6ZGER","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358575},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"c095079053081fd9897eefc090c851a4eddb14de","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.62_1776357108544_0.9066022916794612","host":"s3://npm-registry-packages-npm-production"}},"1.0.63":{"name":"workflow-ai","version":"1.0.63","_id":"workflow-ai@1.0.63","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"b70e7f473d051c5c40deecca3e5dc070e5518dbc","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.63.tgz","fileCount":38,"integrity":"sha512-iMOu3EjZ/dKpJ1Bo+XUaCIl9tIm7kpyUfh4hirQTxiqcK+uYpRjdJc5dLzpGTHch1osle8sC8/IrRcr/fyxUww==","signatures":[{"sig":"MEUCIQCLZsz8xmishM5xzsAvrfVMuRcOfudDqabzhvvI1WV6YwIgC4fLgiGxtB1snL5wLPMyCGqs1kZxwErMQngjkaGgFQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445883},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"2ca8b418c1ab063cdd66e1e9257a1f89462205dd","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.63_1776585870272_0.054381560773943516","host":"s3://npm-registry-packages-npm-production"}},"1.0.64":{"name":"workflow-ai","version":"1.0.64","_id":"workflow-ai@1.0.64","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"e454752428796858cb2926090d8ade26fbddc2c2","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.64.tgz","fileCount":529,"integrity":"sha512-obSZ59Wz6EBrkCJkyNTJwuOjG+n5d21cFGBUnN9PeXLy2LKJwBZA54My0C8S5dF1dFkIbeI3JW6JPg9QQGzFNA==","signatures":[{"sig":"MEUCIETF2DKND6PKgxnoFhlmq466xBZmNEpo7Ah/jDwnp9DFAiEAyuMnWe5jxpiy4o909SHeUhoszlBh+sN0v+65vZCxGqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2212282},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"ba7189a09f911c40b96305d4a761914fe71b9e53","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.64_1776689439909_0.418712325094297","host":"s3://npm-registry-packages-npm-production"}},"1.0.65":{"name":"workflow-ai","version":"1.0.65","_id":"workflow-ai@1.0.65","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"f795b33777d8ef33034e58aff4a325b28b95c914","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.65.tgz","fileCount":608,"integrity":"sha512-jsCdFbZUni/wqTCTHm62zYmGUyfPXm/TYnWQ5HkBe+UMBvhOiZn+FlJH3sP/iU1kSOsaSLP86ivqnsgGZJnyZA==","signatures":[{"sig":"MEYCIQDvlMVfMbDJgWNPmG0tQ/QYMqlr9IS7ZKz2HPohno6l6gIhAPPZapgOmW1PNkXXEETBxNn8qO3qRUBQ0/I+ZpfFA8Kk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2592947},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"7126a1415b0143173bf03d6a1867e14be2e82d60","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.65_1776769036532_0.5736324109062316","host":"s3://npm-registry-packages-npm-production"}},"1.0.66":{"name":"workflow-ai","version":"1.0.66","_id":"workflow-ai@1.0.66","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"f7645d4378a151eed4100923e46afe309d72e350","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.66.tgz","fileCount":628,"integrity":"sha512-FmuT5kpGwCWtB9M4rpXjKCd0WDtPT0uPnRmLgj8p81cicQRw8+cjIv86CKZxsdrzGmkXTPS1Xv469D2H2WrYUQ==","signatures":[{"sig":"MEQCIDAyoCxLabY4JJOi8QQUa0uft6TB6clweyCORTnsIQLSAiAbPiIi+v6Ff2DQ0X242YeUSfz2hNRB27AXgcEPlSyUhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2651136},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"5a33f20f7f9b500cd7347edc211598fc58daf53d","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.66_1776791174692_0.2207451666976259","host":"s3://npm-registry-packages-npm-production"}},"1.0.67":{"name":"workflow-ai","version":"1.0.67","_id":"workflow-ai@1.0.67","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"b28b2240d1806d6c4c83c6c2dbbffb12fa0945a5","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.67.tgz","fileCount":628,"integrity":"sha512-FuvJmSL4N0m227u0kdkJoJ1XQNVQFVoIxK+xEmSgrihKPs1G4UQECnWQlbsNAR6dAL6xXIg5tGUTzuY30w4XMA==","signatures":[{"sig":"MEQCIDtfidIx5+pWvXwTAU/ycuxhsgMnerhfJT3TCdc02DaMAiBP4DSze1H9KZqO5zpruQlhB6JPfWjzmz5zqUYaf/vafA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2652687},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"d21c08555b45cfe9229a39eec7d64259fa5e186e","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.67_1776934326754_0.8488795329030845","host":"s3://npm-registry-packages-npm-production"}},"1.0.68":{"name":"workflow-ai","version":"1.0.68","_id":"workflow-ai@1.0.68","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"7a97b52d687e93acb3682a7dcfef83081ae7870d","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.0.68.tgz","fileCount":628,"integrity":"sha512-zMuHNfDCn3g+IfcV1l8XALv+3sxnhg7vKGcn6liOm/5Yylfb6QOThmIzJTe7E20BA2mstQkoZdsucXsA9Dkaiw==","signatures":[{"sig":"MEUCIQD34Nhwe5mB7486A5NWxcl0duDRLjyOY67rhCVIipeu+AIgb6KS0Pyv7MG8bTb228KAl3e46C8vFMw44h+vBl+EXLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2652995},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs"},"gitHead":"6e9a50fed87d7af028eaffbbc51c5d68b9556e21","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.0.68_1776952701221_0.24709811051047348","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"workflow-ai","version":"1.1.0","_id":"workflow-ai@1.1.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"e9efb1a05967a5e1e85cc0eb87ed3c5ccaefbb29","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.1.0.tgz","fileCount":641,"integrity":"sha512-lS4I9I8zke8mQaQIXCbJwmHKxiHvylW7XQ3gSi+wTRNMmTv73yUY7bBFC2ezawnOhrwx9FwAuQOqgLfASW3koA==","signatures":[{"sig":"MEUCIDkNO79zJS7ACzEMDgYfcK+KQS5XhUvHz4nVDVK4z0GyAiEA6fcQ2QpW45IOJQ/gX9qCwFilawv1YX85ddYBMl9LtA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2661640},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"7d5b9f0bac4ef6548602049754ab8b26eb763226","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.1.0_1777118126710_0.10585753813979948","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"workflow-ai","version":"1.2.1","_id":"workflow-ai@1.2.1","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"74c19c2d55a3c63c99d1f656b0e0ca613712e082","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.2.1.tgz","fileCount":62,"integrity":"sha512-hkSTEb0yXrXUEyA9exCuDra1+ktaMWxgQhZCzh+8JieRvZ4jxMgKK2J88ZElRphtUTydJ1tuuawNbM8Asx0BJQ==","signatures":[{"sig":"MEYCIQCP/IhHt3tE7W2+gBFdSk4UNRLBv4M1Sg5Lym8dNFepoAIhAIA2p0V8sEOEnSn/tch/eFWo2BxTd9/G171oOvO8CwqO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":755115},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"83d1b70659486c827e81a37d79dd93015ea6a9cc","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","test:skills":"node src/scripts/run-skill-tests.js --all"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.2.1_1777376648280_0.8621276367494746","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"workflow-ai","version":"1.3.0","_id":"workflow-ai@1.3.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"d0ac830acf41a32ddcc7a13a6ac428e386ffe835","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.3.0.tgz","fileCount":65,"integrity":"sha512-o3huY2JNFDa1hNwpaXzUSfR7fSa55DZPtwSBITzbw36zheOcn3x1UrMo3NhQblca7pN1L3QVnDKhA2xwxaqQHg==","signatures":[{"sig":"MEYCIQDGmlKkTsy5lMYJP1sXZDa/xzxu8s18itldXYwpkHerNgIhAKSEF046icIlH2cxZfStKgzx9nB6l3pDJi1LdGxiLJtV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":753483},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"101da18df583a1b8963d3582694f3f5b2a121790","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","coverage":"c8 node --test src/tests/*.test.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","mutation-test":"stryker run","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.3.0_1777631293659_0.20562040580571317","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"workflow-ai","version":"1.3.1","_id":"workflow-ai@1.3.1","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"22d6259ced8e6e0fca8fb62e5aecdf6cedf2e571","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.3.1.tgz","fileCount":68,"integrity":"sha512-sdaqS6HKRVR801q28POzCMJKj3qdnLnImPY8DN/26/pYGCXadBDb1c/RJCGiGs7o8jtIIWRqpAfE5XFJj4E4kg==","signatures":[{"sig":"MEYCIQDNyBGn495Cqy67K9e7zP62QvuZXZQ5wLW2QUV7n95megIhAIqmPfXmpsU92z+BMiVVztLi7bA6VNpxv8psNQ1koN2Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":770350},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"eac47f708996f0137bb688d60b4a96c44cd3ef20","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","coverage":"c8 node --test src/tests/*.test.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","mutation-test":"stryker run","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.3.1_1777703923364_0.7823489308369638","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"workflow-ai","version":"1.5.0","_id":"workflow-ai@1.5.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"e4d1e05c2cac63083bb24add56b9ff78b704b734","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.5.0.tgz","fileCount":68,"integrity":"sha512-MgIRvFZfPDA1WzIiRUigorosXaVz9E9Kr+MVEPFvTum3wADlK1OWPiIHam42XJ3opwV77CLY7AzUkj/Ag3zfNQ==","signatures":[{"sig":"MEYCIQCT6gzgnIloBMr2dK5USsb4C+UeYKGiBtTwnpgoChoZHwIhAOST4KjPhOKNNQfvbXtBVeXbRXIYX1qBkBlOEciqvhL/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":776639},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"18d6527db31e10b7263594919482ea77c5ab46b9","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","coverage":"c8 node --test src/tests/*.test.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","mutation-test":"stryker run","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.5.0_1777743905885_0.7877803115233122","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"workflow-ai","version":"1.5.1","_id":"workflow-ai@1.5.1","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"9aafb314f9736fac21aade13b37a16b03ef002b7","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.5.1.tgz","fileCount":72,"integrity":"sha512-QACxy0Thp/QFBeh5rOGK510a6t46SOyO2m5VprJiIVwSAvBhQFtri+coBlDfscRt4Cog865WwSft8KdnExOe2A==","signatures":[{"sig":"MEUCIDxqFzNtSU7NXi2EAXrZ01AJvoZNLJmGmg/SyDjrGHcMAiEAikkTFL+Ji20BlS+IvRUHyp0itc1R9zZN/3Qo66uyU74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":792089},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"fab53af793f5332ef9606cbc58abe2ebfe20cb91","scripts":{"test":"node --test src/tests/*.test.mjs","release":"npm version patch && npm publish","coverage":"c8 node --test src/tests/*.test.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","mutation-test":"stryker run","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.5.1_1777744197988_0.7510739275073022","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"workflow-ai","version":"1.7.3","_id":"workflow-ai@1.7.3","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"6519c3fc7ed238c5b946f51a1ca74db96617b66e","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.7.3.tgz","fileCount":92,"integrity":"sha512-LsCXxvdVXOeR1KezzoxI2sJgONW3jpcVAEMixOpEZ4gqUlyIsLvjOFK/WiHLH78sw0B7458xfwh8slJBGBU3/g==","signatures":[{"sig":"MEQCIGbeJ4J5VjDnL5GQRi/hR1uVRf++f3DZ3syZi0CeDy7AAiAMEb//CJW3hAHt37kmalg3tsQMJcHCz4MadTGIawmLxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDuvEGjTG8C8yUv+cEpDXTpxouIufy5BSTGWXywHZRq3AiEA+66g8ii7CWmKpPNKb6OJkNoKC6xjhRzFGJnZAWyu7Jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1500736},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"4fe722bcd481f2634f429655fa9e6e4e5f60430b","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.7.3_1790325141392_0.2175701522762068","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"workflow-ai","version":"1.7.4","_id":"workflow-ai@1.7.4","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"0d25f250d775db06430dc0da108c0122cfe11fa0","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.7.4.tgz","fileCount":223,"integrity":"sha512-lhXQH2xhVaP6huqyb6fZeGWvMaxiC/YfmtW/sNFe8rOz8eTW32badQH82c2dXl3a1ZZkSHMMDWxUeKRY4owbfg==","signatures":[{"sig":"MEUCIQCYPzHy0/G1PRwGEMdeO8/JFZG2FwXAKLUNTDDlbcC8QAIgRTOzkyFLTNx7UYqoOx1fw9FFlDTgSXqYGYPAjMp/SVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+W4dwLS7VY0+j6qNY9Pm+sBgET5up6+DTmgIKfBowHAIhAOAB6kmjJEw+h82RUfIlxSbFZxZYTGsWqm+KjSTYAqM/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2273297},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"a7bd9c2f7bd14bb02a91ecbd96601a74413db28d","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.7.4_1790327249220_0.9206756925045085","host":"s3://npm-registry-packages-npm-production"}},"1.7.6":{"name":"workflow-ai","version":"1.7.6","_id":"workflow-ai@1.7.6","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"d204abc4a62798aced4abde5068b0e8d4a9cc015","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.7.6.tgz","fileCount":224,"integrity":"sha512-euzjVszk+M7YozFw/uirqmRXvcL6x7f8YwCNcjOibR/0/a3dG8NcU95DmF9Gy1BskRjG1u11BROAHlYRhwxERA==","signatures":[{"sig":"MEUCIHqSoRGjv7EeAsYAT9ygmuAECP8yd+FOzntY06uAa2axAiEA5ZKatdpyBmfo+UUeI/xunX8CxmDJp7b804X9nNpNhwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICZNIzOERxalkGWhi+InQEr7aYSxLRUyjY9EtxpKs9XfAiEAtZUDgjds9DBo4/11qjGYCu9cjbE+Ru4MGaecASVw4/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2291217},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"c5604a92208c65c672bcffb38d0785f6267cc1b7","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.7.6_1790336975821_0.5732008033422558","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"workflow-ai","version":"1.8.0","_id":"workflow-ai@1.8.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"2fc43d37e7715bee386669343c9f1e770e5f1d36","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.8.0.tgz","fileCount":226,"integrity":"sha512-PczC9OXac8FA+uvjw1skOygFNXZFxhJrm9F96kGdX0oKIghdIM3xNUVUOvR+stHvxItxRe4TpWozVHhuLBjdVQ==","signatures":[{"sig":"MEYCIQD5K8WswmObxE7wBpSu4qYF+7goJ4zpKoRJpJnWxsWz/gIhAOmBv1aF/HJn8wZdVyzoecW/PleZzHz+RSdwvtvnowrd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCUnHEy4imulBD4N7fjFl6/gQqOPHF1zjajNZ9r9rf4UQIhAJ4g/NW52AOJsDwhdDrVoyA9N7vxZLMhDuc9Ej5fHw3I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2375139},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.8.0_1790344106582_0.8718488542492957","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"workflow-ai","version":"1.8.1","_id":"workflow-ai@1.8.1","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"694e0f54f51c5a59549c43f4c03cd4cda751feeb","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.8.1.tgz","fileCount":228,"integrity":"sha512-IXkJ85R2jL3P7qmpu/e7SreS+AGUhuUZXMYPGejtZvsfHyrt1E2anTfmjmwZncJRRu133bvH0QEtKkg9NYNsbw==","signatures":[{"sig":"MEUCIQCB8yDG/5SCuaFIP+0nmhNpsfA33ZRaRa53aRT7YnI4JgIgQroZpWb/euEsnnYvuWesFnZhA+3FLonfvioXBTYKP9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEE9nDyKbvLEMAgIyzHor6nawtWK32W/fQswR64SLwffAiEA0i02zLfCJPIYciqV7aIa7rpjWCJkLm9ECvPMxSoVNcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2393287},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"be3c4a114d41933e08eed06062b3d45ea3f82724","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.8.1_1790354883165_0.343251000050248","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"workflow-ai","version":"1.9.0","_id":"workflow-ai@1.9.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"16e8835809c79567b59f889b273aa5e08f4f8e2e","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.9.0.tgz","fileCount":228,"integrity":"sha512-3+BBAMqaEKuWEOazAPYzPSUbduFKaqHC1czuyoGSAzxhKObKp7+ylBjMJ4zKuP2SXT9JQP+B1W/h/w4MezsjRA==","signatures":[{"sig":"MEQCIBotgvK0ubUZrQEm9wNpNx26X5zebkfEhp/q9Qai6KsyAiAf1k1+T+KRPFp8ksVPU9u0mruhvA4mddOxgiEbqXDPZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCF+xwPcMaOSnrJI5vNT77O/dtifTvgLybU5ZRgiK5LRwIhAKgnXG0bF0sMMf56kZAG7jQhl5hKFcONYIYknK7owktb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2420843},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"4f62515bf052bba978493085b0107539b0c274e5","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.9.0_1790367974349_0.43851796918446473","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"workflow-ai","version":"1.10.0","_id":"workflow-ai@1.10.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"e9559e23366dab940bca9a3766788d84d1fc8287","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.10.0.tgz","fileCount":231,"integrity":"sha512-NR39mpn5YvjYyAXvPUilWdloAS9OUBuitucOUi78JN7llPaOs5gsfU2jiwWk0ikPaZXPgveAM48yYGqifX8eKw==","signatures":[{"sig":"MEUCIDnUGqt7d1cb26BxkgKyTHp8yMepExSZJE63aml4b/EoAiEA7aklqS/FA/L2xyI4rIMCMq3OitIz/NzeoxdSOLrUjjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIECGTeis/sYzCk5qMyUOKu+9/6GchIbmf0dOnRryA67SAiAKGysfIp00kV+cfeh+60ltPnAF2/5+SWu/WJ9E8TrnEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2479217},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"585daeb7e165913a4312e83889f9dd97f2a2b7ba","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.10.0_1790399424468_0.9380965404554846","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"workflow-ai","version":"1.11.0","_id":"workflow-ai@1.11.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"b884dae632f49e173b0b2f2eb00df6e7fd174b19","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.11.0.tgz","fileCount":232,"integrity":"sha512-vRj+Y4uS+goFB5vNJ15TeDzHhJZZz1gNGb9JjGp5s92pjWxqmJWQ0+T/52MfDpsnfGZF6nDMP3NC32wpa+LtUA==","signatures":[{"sig":"MEQCIHW0jSaDLrHj6e96NbHPPGVIRAZJLHT29I8wL8qsjjzXAiBtLC2amklil2SS0c7rHp4eKbvVEGcrmpmOSY3RS7XbOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC59yFRs4wtFgPqSFEXd/b4anQ2C4eUi+oOtLA6wxfMdAiBDE1M/Im2u7TYiWxSIi+vAht6XqeeX0jUr+VQ6IKU0rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2498621},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"ffd5263cbe2fb0628d6920fdcae49c2854b156e1","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.11.0_1790412859643_0.9348367962953779","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"workflow-ai","version":"1.12.0","_id":"workflow-ai@1.12.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"07026911a9d010e80670cb34d0139ec83004e80c","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.12.0.tgz","fileCount":237,"integrity":"sha512-z1cEtum9qasyAiQwjHQk20NHhygEFv36p3resb+TeueoH8VAkpyeP+3HwQDiDdChPNcRi5mMfsdbk1KGarKFHg==","signatures":[{"sig":"MEUCIA+CxUcuSdEXezmQ07Z7ZL1kc4/y7sLiTTs5PvCnkopIAiEAljV3OK+A6OY/eu7CKyHTpY0cyU33UnLi8+/eap5HRNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD1z5EXXsD02bwQfyTY05qSFwOuktkMA0Mr0IWG0R2vAgIhAL3qpM5Q5AI5wdgg6s/jFseANI1WzdD3F+lUIon51Ju2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2640926},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"4def0d9efe6716c69adb9609438cc29bf532e173","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.12.0_1790440194528_0.47753924893465416","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"workflow-ai","version":"1.13.0","_id":"workflow-ai@1.13.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"3f13768ac2fe6654d207cbb149d06d2d3241be90","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.13.0.tgz","fileCount":237,"integrity":"sha512-LEthmay7kGURjisxnDdVZ7TV3S62IA1GY/3qwYUj+6SZ3A495KfE2g5GSd8encLD1IVGM5TOIHi8JkLn4uKJhQ==","signatures":[{"sig":"MEUCIQCDf1LKkCxp3Gs+DxxAsK1/zwZf7QO14XN6gdrJPoFEZQIgKb0dHFE8Mbi6F0qXyqFS3WSxvGWAlrj258cKw+wMcYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDANYL+/yEptFDG2OPlDXWANvOfdybUBJKK37sHaxTXXgIhAJl+Ku9BOAJqyQQLA7wqsb4wNl1WSuKEq95wiVlx5m8T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2651525},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"1b52f6c01ff74e6751b7edf6117c0d335d75a8fa","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.13.0_1790481101577_0.8120867189934489","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"workflow-ai","version":"1.14.0","_id":"workflow-ai@1.14.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"d3dac2c60d263e0437d74582538633e896e781bc","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.14.0.tgz","fileCount":238,"integrity":"sha512-umAjAYlG/4CpfN9RuW3BsP6XVRDvcTudLBlLp9gOJSKE2adPpZJSsuP7aKle5S4qKcDif578yyn+cNaO0+0iow==","signatures":[{"sig":"MEYCIQDLcONA/BylTDQWv7xz1N8kPkGpDI6+UscuPuS2fmfjvQIhAPd5SM5P9hwkfqOksp2HR1Qfeaoo/ADXLQy/Hw590/jp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGDSXjN0Owa1KqGtLQ2GRoKg44L3su5isft17GqakeKdAiB0edKIA1e1X1BISYnC7kXIJGDh7FFmDWqyi6EUqmwfVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2735617},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"5ff5164ef1e88334e4d0a8b3e5bb4af82477a18e","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.14.0_1790488003022_0.9818450202211462","host":"s3://npm-registry-packages-npm-production"}},"1.14.1":{"name":"workflow-ai","version":"1.14.1","_id":"workflow-ai@1.14.1","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"dea3adb7ef01468ed03835d9f329d9dfdfde1abf","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.14.1.tgz","fileCount":238,"integrity":"sha512-JYtwMPNmqPIkZTwG+0fmFDhWvUaHyvKwzhTRaGWJTJXjafbdjhUZKRuk/axMjO0dgp55fvUzDPR5i4fDeMEjTQ==","signatures":[{"sig":"MEQCIF8mtbhoOkfFgvhPeJyiUW+UMUxd9cAPbbfh0t8pMplxAiA2PWJ62DSKtrqtZPvNsBodkfgdYm6TXBB6FBSqr8b4mg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDFnOQMj/Q6ImSp22XhHbvI9GBtC7ydGih/zgxrAV1q6AiAuwoe858UiLzdejUtxff+T3vwkkDv2Ulxfuyy3oiudEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2737449},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"c8582c7837a70c47f97375c4c6d703d4ef83c4e8","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.14.1_1790490030659_0.9357030961829764","host":"s3://npm-registry-packages-npm-production"}},"1.14.2":{"name":"workflow-ai","version":"1.14.2","_id":"workflow-ai@1.14.2","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"31ead66a63c1b1fce2e566ed7a5907534d5e37a1","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.14.2.tgz","fileCount":238,"integrity":"sha512-TdPVOMzWYj/OahJBQOOKQ58DDqJ8XO/npDu7m3mTgo48PnGtpyQMf/OzsPRX8l69iEoBQtiOid0/hlQ2RpgU3w==","signatures":[{"sig":"MEUCIF49qJo1jzu45ubDNeyqJdbdZj59D7HbAh8rhr6uE+GyAiEAtWucIkku6P+M4s9dSMSJk0/u8EjX89qmlLrJRkP5Iu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA72y4khIEiPhoM2UbrbERHX/XuL5bS8W5aU/TAR9d1pAiEAv3NmtliknOzb10bRPhdGi8LGIWhur8Woe4RiFJbzu8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2740769},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"ebe02aaf4112e8e5720b95ef62c5df5e31a8da0a","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.14.2_1790495130501_0.5137298208565164","host":"s3://npm-registry-packages-npm-production"}},"1.14.3":{"name":"workflow-ai","version":"1.14.3","_id":"workflow-ai@1.14.3","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"5d99d8748ebff3eb5d0be8fdd40983bfb195bac8","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.14.3.tgz","fileCount":238,"integrity":"sha512-256rtfRYeuQDAyXFBPCdAVp1qNTwWlPA76gVVkU6vzSyWG4u6eVQL+mOzol25itBHGyYIqnsbv7nm96lDR2J8A==","signatures":[{"sig":"MEYCIQDby+khjTcYUXTbXITvfd2b8fYSBv2mnRTUlQ8sCwaIPwIhAOH4TdHI4246ZGxwunIwgvHr31uxP5h5idHtSN2XrAju","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH6nM9gEb5+Q8nHeneEaUkDrqSnSKPZGG9fydNU65WnsAiEAycI45Ya19VGTKieFG09v7gLjQudcMlvDHJ1MJVSRIlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2743021},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"c5cce831960efd9c4590a880846238cc21911ce4","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.14.3_1790497583681_0.6186040964832702","host":"s3://npm-registry-packages-npm-production"}},"1.14.4":{"name":"workflow-ai","version":"1.14.4","_id":"workflow-ai@1.14.4","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"825f0dfe73eb06f73be364613028af47602e8901","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.14.4.tgz","fileCount":238,"integrity":"sha512-hMGxqrrPIyyE3EIPjQINLkTLgAjDvhIEF8czSRdI+bSWFvofoKYdWTVsWTUa0mnluVw3vGoxxVnb+NNrcWaP2g==","signatures":[{"sig":"MEYCIQCxmlSexoctbKCsb01s6RhVeBo++I9sKRzpKfnuia3BHQIhAJIoiNOL6WKmag1ttfJhoANKuLjYVhurGlgisxvrlJ/X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDqS/eXbqyNvG6zca42+BcfqFo6pguuhkR1yxKjE3X/wAIhAPkhfXpAVbmboNrYKbcMK7SdTfemDrHQBJyOb8wTUegK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2745476},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"efb7c6315e07bf64686b8a5c16dd578c5b19f5d6","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.14.4_1790500143662_0.40838637571174585","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"workflow-ai","version":"1.15.0","_id":"workflow-ai@1.15.0","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"aa23a4dd50f6c1de5a2e03da5557e48fc7ef4615","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.15.0.tgz","fileCount":238,"integrity":"sha512-JHjspvW0LCVcKK8hdBEFqNvllTSNyiame3fjN/KYDfub1l+P2OWUwcDHb5WrUm/FmtjOEh5hF8mhFZyjA5gPBA==","signatures":[{"sig":"MEUCIQCsbszh3OlEOUiqCfIhJLVVwWAMo7i/9WyPGYiBbCFjxAIgRLafc5Y/FEwpHNnw6fsVtaodBLr4hMDcVdJ9Zk+3ahc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFRy4t0vtLIPwVtMEWx5Yp/xEQViHDkNFQ27UNr9ZKq8AiEAg0+7ovROOmaeuvJbR6/RmOwFTQ4W22vzkYr1tioD+Q8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2796899},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"bec9fdf9fa30ed4f3457a159bc0295deffd9f3cc","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.15.0_1790523631402_0.5066194366035077","host":"s3://npm-registry-packages-npm-production"}},"1.15.1":{"name":"workflow-ai","version":"1.15.1","_id":"workflow-ai@1.15.1","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"a68f5b4d7d08eefc347b0be7ffafeefb755784d7","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.15.1.tgz","fileCount":238,"integrity":"sha512-aysWCYSLxhihnh6Dk6G8/hxBczK99gB80/sXLmNfrujBLB5PpJXsj3zWTLVWZoxJfL+9GtdrCKdEEgp5ezlkjQ==","signatures":[{"sig":"MEUCIQCEzcHlZ3ogCAY+ijBxnyN6+F5hYwYNKfyhKlbpXwdsuAIgPXw+7ycpWCJUGW3+3hX1h5vCg8jp/z8YGE0wKWWmjbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDKxE8rUOi+LtfMCpdAf56E18i23tubZFVTcFlde0Bp+AiAOh2EK9qXxkyU0MzVOcuD/wxe0gbxDYJtiLvy97FAZpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2827977},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"485a41ccc177585d5de72921fb8fea974e5023c5","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/workflow-ai_1.15.1_1790529110282_0.9180917078268138","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"_id":"workflow-ai@1.16.0","bin":{"workflow":"bin/workflow.mjs"},"dist":{"shasum":"5f2592f6994e14b87f31df72205fedb943230c70","tarball":"https://registry.npmjs.org/workflow-ai/-/workflow-ai-1.16.0.tgz","fileCount":244,"integrity":"sha512-4Xsfi3DZRLnPpLreiRygtzRDxeieu7v7hJGOqlf0xO6e1tYisD46bpJMl2/gNCCEkVe8a3ZsVH5lQc9Gni0TMA==","signatures":[{"sig":"MEYCIQCWE7AgQSVj1yItVkTxvSqYjbt/4NejBuSAGESlDMMh0gIhALaSLCBazD0tVNgDT8tY/SzlSF26noSsTIG7uwZPA6o4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBCQ9Jq8IisQ8HQgYKWkP1ROT/FAnmMOGS0qpNCqyVucAiAMrNraXB9e8BbDbYEWRgf8RPOlIbpMmKqa+9uaLWTZnA=="}],"unpackedSize":2983085},"name":"workflow-ai","type":"module","engines":{"node":">=18.0.0"},"exports":{"./lib/utils.mjs":"./src/lib/utils.mjs","./lib/logger.mjs":"./src/lib/logger.mjs","./lib/js-yaml.mjs":"./src/lib/js-yaml.mjs","./lib/find-root.mjs":"./src/lib/find-root.mjs","./lib/agent-runs.mjs":"./src/lib/agent-runs.mjs","./lib/check-runner.mjs":"./src/lib/check-runner.mjs","./lib/rubric-levels.mjs":"./src/lib/rubric-levels.mjs","./lib/operations/plans.mjs":"./src/lib/operations/plans.mjs","./lib/operations/skills.mjs":"./src/lib/operations/skills.mjs","./lib/operations/tickets.mjs":"./src/lib/operations/tickets.mjs"},"gitHead":"c0950f4776595dc07504368ae4ac1bfb29180035","scripts":{"test":"node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs","bench":"node --test src/tests/artifact-snapshot.bench.mjs","release":"npm version patch && git push --follow-tags","coverage":"c8 node --test --import ./src/tests/_rails-home.mjs src/tests/*.test.mjs src/skills/*/tests/rails/*.test.mjs && node scripts/check-coverage-ratchet.mjs","bench:perf":"node --test --test-concurrency=1 --test-timeout=120000 src/tests/perf-approval-hook-latency.bench.mjs src/tests/perf-mark-blocked-latency.bench.mjs src/tests/perf-pick-next-task-large-backlog.bench.mjs","test:skills":"node src/scripts/run-skill-tests.js --all","test:rails-guards":"node --test --import ./src/tests/_rails-home.mjs src/skills/*/tests/rails/*.test.mjs","coverage:move-ticket":"c8 node --test src/tests/scripts-move-ticket-approval-hook.test.mjs","coverage:mark-blocked":"c8 node --test src/tests/scripts-mark-blocked.test.mjs","coverage:pick-next-task":"node scripts/coverage-pick-next-task.js"},"version":"1.16.0","_npmUser":{"name":"beatlejute","email":"beatlejute@gmail.com"},"_npmVersion":"11.8.0","description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","directories":{},"maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"_nodeVersion":"25.5.0","dependencies":{"js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","@stryker-mutator/core":"^9.6.1","@stryker-mutator/javascript-mutator":"^4.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/workflow-ai_1.16.0_1790571369517_0.2869492722292095"}}},"time":{"created":"2026-03-04T13:19:48.218Z","modified":"2026-09-28T04:56:09.812Z","1.0.0":"2026-03-04T13:19:48.464Z","1.0.1":"2026-03-06T06:53:30.016Z","1.0.2":"2026-03-06T07:12:00.779Z","1.0.3":"2026-03-06T10:26:59.331Z","1.0.4":"2026-03-07T12:43:27.027Z","1.0.5":"2026-03-07T13:15:16.389Z","1.0.6":"2026-03-07T14:08:59.146Z","1.0.7":"2026-03-07T15:05:32.981Z","1.0.8":"2026-03-07T17:23:54.579Z","1.0.9":"2026-03-08T07:35:32.432Z","1.0.10":"2026-03-08T10:40:50.762Z","1.0.11":"2026-03-08T13:50:25.238Z","1.0.12":"2026-03-08T19:18:00.313Z","1.0.13":"2026-03-09T07:11:18.860Z","1.0.14":"2026-03-10T06:33:34.644Z","1.0.15":"2026-03-10T07:26:33.652Z","1.0.16":"2026-03-10T13:54:17.715Z","1.0.17":"2026-03-10T17:19:20.532Z","1.0.18":"2026-03-11T03:45:09.480Z","1.0.19":"2026-03-11T03:52:02.978Z","1.0.20":"2026-03-11T06:40:09.633Z","1.0.21":"2026-03-11T08:14:22.130Z","1.0.22":"2026-03-11T09:01:32.725Z","1.0.23":"2026-03-11T16:40:09.200Z","1.0.24":"2026-03-14T18:01:28.220Z","1.0.25":"2026-03-15T14:11:17.368Z","1.0.26":"2026-03-16T06:19:01.898Z","1.0.27":"2026-03-16T06:51:41.502Z","1.0.28":"2026-03-16T08:02:44.608Z","1.0.29":"2026-03-18T13:06:28.975Z","1.0.30":"2026-03-18T13:14:49.971Z","1.0.31":"2026-03-18T13:32:52.638Z","1.0.32":"2026-03-18T14:15:48.192Z","1.0.33":"2026-03-18T15:32:09.317Z","1.0.34":"2026-03-18T15:42:57.805Z","1.0.35":"2026-03-18T15:49:57.220Z","1.0.36":"2026-03-18T17:44:06.857Z","1.0.37":"2026-03-18T17:59:07.061Z","1.0.38":"2026-03-18T18:03:41.519Z","1.0.39":"2026-03-20T10:37:25.073Z","1.0.40":"2026-03-22T09:55:21.973Z","1.0.41":"2026-03-23T14:19:14.503Z","1.0.42":"2026-03-23T14:40:40.348Z","1.0.43":"2026-03-23T14:47:05.956Z","1.0.44":"2026-03-23T15:08:35.030Z","1.0.45":"2026-03-23T15:23:28.220Z","1.0.46":"2026-03-23T15:59:16.220Z","1.0.48":"2026-03-25T05:43:51.385Z","1.0.49":"2026-03-25T12:47:32.172Z","1.0.50":"2026-03-26T19:20:22.138Z","1.0.51":"2026-03-28T09:08:36.861Z","1.0.52":"2026-03-28T15:20:52.167Z","1.0.53":"2026-03-29T07:44:08.810Z","1.0.54":"2026-03-29T13:40:38.615Z","1.0.55":"2026-03-30T06:40:14.175Z","1.0.56":"2026-03-30T12:58:36.096Z","1.0.57":"2026-04-06T12:12:53.667Z","1.0.58":"2026-04-06T16:27:02.260Z","1.0.59":"2026-04-07T07:43:41.460Z","1.0.60":"2026-04-07T09:01:58.386Z","1.0.61":"2026-04-15T14:05:03.777Z","1.0.62":"2026-04-16T16:31:48.678Z","1.0.63":"2026-04-19T08:04:30.414Z","1.0.64":"2026-04-20T12:50:40.080Z","1.0.65":"2026-04-21T10:57:16.730Z","1.0.66":"2026-04-21T17:06:14.907Z","1.0.67":"2026-04-23T08:52:06.979Z","1.0.68":"2026-04-23T13:58:21.381Z","1.1.0":"2026-04-25T11:55:26.909Z","1.2.1":"2026-04-28T11:44:08.480Z","1.3.0":"2026-05-01T10:28:13.855Z","1.3.1":"2026-05-02T06:38:43.564Z","1.5.0":"2026-05-02T17:45:06.145Z","1.5.1":"2026-05-02T17:49:58.192Z","1.7.3":"2026-09-25T08:32:21.492Z","1.7.4":"2026-09-25T09:07:29.353Z","1.7.6":"2026-09-25T11:49:35.973Z","1.8.0":"2026-09-25T13:48:26.703Z","1.8.1":"2026-09-25T16:48:03.257Z","1.9.0":"2026-09-25T20:26:14.462Z","1.10.0":"2026-09-26T05:10:24.620Z","1.11.0":"2026-09-26T08:54:19.735Z","1.12.0":"2026-09-26T16:29:54.697Z","1.13.0":"2026-09-27T03:51:41.699Z","1.14.0":"2026-09-27T05:46:43.156Z","1.14.1":"2026-09-27T06:20:30.798Z","1.14.2":"2026-09-27T07:45:30.625Z","1.14.3":"2026-09-27T08:26:23.797Z","1.14.4":"2026-09-27T09:09:03.769Z","1.15.0":"2026-09-27T15:40:31.494Z","1.15.1":"2026-09-27T17:11:50.449Z","1.16.0":"2026-09-28T04:56:09.651Z"},"description":"AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents","maintainers":[{"name":"beatlejute","email":"beatlejute@gmail.com"}],"readme":"\n- Добавлено упоминание `human-gate` в разделе про runner-стадии (пример конфига в pipeline.yaml: human-review-step типа manual-gate).\n- Добавлено упоминание `mark-blocked` как механизм нотификации autoblocked-тикетов (поля auto_blocked_reason/attempts/at).\n\n## Синглтон семантика Pipeline\n\nСистема workflow реализует паттерн синглтона для выполнения пайплайна: одновременно разрешена только одна активная инстанция пайплайна для каждого проекта.\n\n### Семантика Синглтона\nПри попытке запустить второй пайплайн, когда первый уже работает, система вернёт ошибку `PIPELINE_ALREADY_RUNNING`.\n\n### Структура `.workflow/logs/.pipeline.lock`\n\nФайл пишется одной записью в момент захвата блокировки (`wx`), поэтому\nплейсхолдеров `null` в нём не бывает. Между созданием файла и записью содержимого\nесть микросекундное окно, в котором читатель может увидеть его пустым: пустой или\nневалидный JSON следует трактовать как «повторить чтение», а не как «пайплайна нет».\nПоля:\n\n- `pid` — ID процесса работающего пайплайна\n- `started_at` — временная метка запуска (ISO)\n- `timestamp` — то же значение; оставлено для потребителей, читавших ранний формат\n- `started_by` — кто запустил: `cli`, `mcp` или `extension`\n- `started_by_id` — метка запустившего экземпляра; поля нет, если запускающий не представился\n- `run_id` — идентификатор запуска, совпадает с именем лог-файла без расширения\n- `pipeline_log` — путь к логу через `/`; относительный от корня проекта, а если `execution.log_file` указывает на другой диск — абсолютный\n- `project_root` — корневая директория проекта\n- `pipeline_version` — версия workflow-ai, записавшего блокировку\n\nПоле `started_by` заполняется из переменной окружения `WORKFLOW_STARTED_BY`,\nкоторую выставляет тот, кто спавнит раннер (workflow-mcp — `mcp`, расширение\nVS Code — `extension`). По умолчанию `cli`; неизвестное значение отбрасывается.\nПеременная снимается из окружения сразу после чтения, поэтому дочерние агенты\nеё не наследуют.\n\nПоле `started_by_id` заполняется из `WORKFLOW_STARTED_BY_ID` — той же стороной\nи по тем же правилам: переменная снимается сразу после чтения, значение длиннее\n128 символов или с пробелами отбрасывается. Раннер его не расшифровывает, для\nнего это непрозрачная метка. Нужна она тому, кто запускал: workflow-mcp по ней\nузнаёт собственный запуск и отличает его от запуска соседней рабочей области.\nДо 1.7.0 сервер писал для этого свой файл рядом (`.workflow/logs/.mcp-started-by`),\nи два файла про один запуск умели разойтись.\n\nПолный payload появился в 1.6.0; более ранние версии писали только\n`pid`, `timestamp` и — с 1.5.2 — `started_at`. Наличие `started_by` служит\nпризнаком раннера ≥ 1.6.0, наличие `started_by_id` — ≥ 1.7.0.\n\n### Команды\n- `workflow run --project <path> [--plan PLAN-X] [--config <path>]` — запустить пайплайн\n- Остановка: программно через `stopPipeline()` из `src/lib/stop-command.mjs`\n  либо через MCP-инструмент `stop_pipeline`. Команды `workflow stop` в CLI пока нет.\n- `SIGINT` / `SIGTERM` (Ctrl+C; на POSIX — `stopPipeline()`, MCP `abort_pipeline` и\n  остановка из расширения VS Code) раннер отрабатывает сам: снимает текущего агента, пишет его исход в журнал запусков\n  (событие `run` со статусом `aborted` и `stop_requested: true`), следующего агента не\n  берёт, снимает `.pipeline.lock` и выходит с кодом 130. Повторный сигнал во время\n  остановки — агент снимается сразу (на POSIX — `SIGKILL`, только сам процесс агента,\n  без его потомков) и выход 130 без ожидания.\n- Снятие процесса раннера целиком (`taskkill /F` — на Windows `stopPipeline()`, MCP\n  `stop_pipeline`, `abort_pipeline` и расширение VS Code; `SIGKILL` — MCP `stop_pipeline` на POSIX и\n  эскалация, если раннер не вышел после `SIGTERM`), падение раннера или машины исход\n  записать не дают: остаётся\n  запись открытого запуска `.workflow/state/agent-run-open.json`, её закрывает\n  следующий `workflow run` (см. «Восстановление»).\n\n### Восстановление\nБлокировка от упавшего процесса (kill -9, ребут, принудительное завершение на\nWindows) остаётся на диске, но помечена мёртвым `pid`. Специальных действий не\nнужно: следующий `workflow run` проверяет живость процесса, пишет\n`stale marker found — removing` и снимает блокировку сам. Проверить вручную:\n`node -e \"console.log(require('fs').readFileSync('.workflow/logs/.pipeline.lock','utf8'))\"`.\n\nЗапуск агента, прерванный вместе с раннером, раннер тоже закрывает сам. До старта\nагента он пишет `.workflow/state/agent-run-open.json` (`run_key`, агент, стадия,\nтикет, время старта) и удаляет файл после события `run` в журнале запусков. Файл\nостался — следующий `workflow run`, взяв `.pipeline.lock`, до первой стадии дописывает\nв журнал событие `run` с его полями, `status: \"aborted\"` и `interrupted: true`\n(`started_at` — время старта агента, `ts` — время дописывания) и пишет в лог\n`agent run interrupted: agent=… ticket=… run_key=…`. Событие с этим `run_key` уже\nесть или файл не читается — файл удаляется без события. Второй `workflow run` при\nживом раннере файл не трогает: он не берёт lock.\n\n## Окружение агентов: `~/.workflow/agent.env`\n\nПеременные из `<WORKFLOW_HOME>/agent.env` (по умолчанию `~/.workflow/agent.env`)\nполучает каждый агент — и в стадиях pipeline, и в тестах скилов, кто бы ни запустил\nраннер (MCP, расширение VS Code, терминал). Типичное содержимое — прокси:\n\n```\n# строки KEY=VALUE; комментарий — только целая строка с '#' в начале\nHTTP_PROXY=http://user:pass@host:port\nHTTPS_PROXY=http://user:pass@host:port\nALL_PROXY=\n```\n\n`#` внутри значения — часть значения (не комментарий). Пустое значение\n(`ALL_PROXY=`) убирает переменную из окружения агента. Файл перекрывает\nокружение раннера, служебные `WORKFLOW_RAILS_*` главнее файла. Файл машинный и\nвне git (в нём бывают учётные данные): в лог стадии пишутся только имена\nпеременных (`agent.env: задано HTTP_PROXY, HTTPS_PROXY; снято ALL_PROXY`),\nзначения — никогда; нечитаемый файл и строки не по формату — `WARN` с путём и\nномерами строк. Читается при каждом запуске агента, перезапуск раннера после\nправки не нужен. Нет файла — окружение агентов не меняется.\n\nЗачем: 2026-09-24 автообновление kilo перезаписало обёртку `kilo.cmd`, которая\nподставляла прокси; раннер из расширения запускал kilo напрямую, и все kilo-агенты\nполучили `403 Forbidden`. Реализация — `src/lib/agent-env.mjs`.\n\n## Скилы для kilo\n\nkilo CLI 7.7.x читает `SKILL.md` из проектного `.kilocode/skills`, только если\nнастоящий путь файла (после раскрытия всех ссылок) лежит внутри проекта; иначе —\n`failed to load skill … blocked file reference outside project config scope`, и\nагент работает без текста скила. Поэтому `workflow init` / `update` / `eject`:\n\n- ставят ссылку `<каталог настроек kilo>/skills` → `~/.workflow/skills` — канон\n  для всех проектов (каталог настроек: `KILO_CONFIG_DIR`, иначе\n  `<XDG_CONFIG_HOME или ~/.config>/kilo`); своему каталогу kilo доверяет без\n  проверки. Существующий каталог или чужую ссылку там не трогают;\n- держат `.kilocode/skills` проекта обычным каталогом со ссылками только на скилы,\n  физически лежащие в проекте (эжектнутые и проектные). Прежняя ссылка на весь\n  `.workflow/src/skills` снимается — удаляется только ссылка, не цель.\n\nПроверка: `kilo run \"List the names of all skills available to you\"` из корня\nпроекта — без строк `failed to load skill`.\n\n## MCP-серверы у агентов\n\nТикет с `required_capabilities: [mcp]` исполняет агент со способностью `mcp` в\n`capabilities`; без такого агента в списке стадии тикет уходит в `blocked/`\n(`no_capable_agent`). В `configs/pipeline.yaml` `mcp` есть у агентов `claude`:\nclaude подключает серверы из `.mcp.json` проекта, разрешённые в\n`.claude/settings.local.json` (`enabledMcpjsonServers`), в том числе в режиме `-p`.\nkilo `.mcp.json` не читает — у kilo-агентов `mcp` нет. Перед тикетами типов из\n`context.mcp_require_for` стадия `check-mcp` проверяет, что серверы из `.mcp.json`\nразрешены, http-серверы отвечают, а команда stdio-сервера находится в `PATH`.\n\nПроверка: `claude -p` из корня проекта с просьбой найти инструменты сервера через\nToolSearch — в ответе имена `mcp__<сервер>__…`. `claude mcp list` для сервера из\n`.mcp.json` может показывать `Pending approval` и при разрешении в\n`settings.local.json`: 2026-09-27 в PulseProxy так было, а `claude -p` инструменты\n`mcp__playwright__*` нашёл.\n\n## Фактическая модель kilo-агента\n\nРоутеры kilo выбирают модель сами: `kilo/kilo-auto/free` — одну на сессию (от\nсессии к сессии разную), `kilo/openrouter/free` — заново почти на каждом шаге.\nПока kilo-агент работает, раннер раз в 15 с смотрит, какие модели ответили, и при\nсмене набора пишет строку; после выхода агента — финальную, с числом шагов:\n\n```\n[execute-task] AGENT_MODELS agent=\"openrouter-free(nemotron, ling)\" requested=\"kilo/openrouter/free\" models=\"nvidia/nemotron-3-ultra-550b-a55b:free ×10, inclusionai/ling-3.0-flash-fin:free ×9\"\n```\n\n`agent` — подпись агента: модель одна и совпадает с запрошенной — просто id\n(`gpt-luna`); одна другая — в скобках её имя (`kilo-free(dots-3-note-preview)`);\nнесколько — семейства по убыванию шагов (`openrouter-free(nemotron, ling)`, семейство —\nимя модели до первого дефиса). Та же подпись встаёт в столбец «Агент» истории работы\nтикета и показывается в панели pipeline расширения VS Code.\n\nИсточник — база kilo: kilo 7.7.9 записывает ответившую модель роутера в каждый\nзавершённый шаг; у агента с фиксированной моделью шаги без модели, и модель шага —\nмодель сессии (`session.model.id`, у субагента без своей модели — модель корневой\nсессии). Сессию запуска раннер находит по метке `kilo run --title workflow-<run id>`\n(свой `--title` в аргументах агента не перекрывается), шаги субагентов считаются\nвместе с ней. За запуск в журнале запусков отвечает модель последнего шага корневой\nсессии. Путь базы спрашивается у `kilo db path` один раз на процесс раннера,\nчтение — встроенным `node:sqlite` (Node ≥ 22.5). Нет модуля, базы, сессии или шагов —\nв логе строка «фактическая модель неизвестна», на ход стадии это не влияет.\nРеализация — `src/lib/kilo-models.mjs`.\n\n## Журнал запусков и отсев моделей\n\nКаждый запуск агента стадии со списком агентов пишется в журнал проекта\n`.workflow/metrics/agent-runs.jsonl` — одна строка JSON на событие, файл только\nдописывается. Промптов, вывода агента и содержимого файлов в журнале нет.\n\n| Событие | Когда пишется |\n|---------|---------------|\n| `run` | агент завершился: успех, ошибка, `model_banned`, остановка пайплайна (`aborted`); за прерванный вместе с раннером запуск — при следующем старте (`interrupted: true`) |\n| `verify` | завершилась стадия контроля артефактов (`verify-artifacts.js`) с блоком RESULT: статус, процент DoD, отсутствующие файлы, `fail_reasons` |\n| `review` | завершилась стадия ревью (`review-result` с `model_io` или со скилом): статус, агент, модель |\n| `unban` | человек снял запрет |\n| `reset` | историю модели обнулили: её запуски до этого события не идут в градации, запреты и `statsTable` (раздел «Пулы моделей» → «Обнуление истории модели») |\n\nМодель запуска: у kilo-агента — модель последнего шага (не прочитана — `model: null`,\nтакой запуск ни в одно правило не идёт); у стадии с `model_io` — модель из ответа; у\nпрочих агентов — значение `--model` / `-m` из `args` как есть, у `kind: http` — поле\n`model`, иначе id агента.\n\n**Градации** — у запуска исполнителя (стадия со скилом `execute-task`), первая ступень,\nна которой остановилась его работа; вычисляются при чтении журнала:\n\n| Градация | Условие |\n|----------|---------|\n| `crashed` | сбой процесса (`error`, `timeout`, `network_error`, `auth_error`, `aborted` без признака остановки пайплайна), ни одного изменённого файла |\n| `refused` | агент вернул `status: blocked` |\n| `stopped` | остановка пайплайна (`aborted` с `stop_requested` или `interrupted`) или `model_banned` — при любых изменениях |\n| `throttled` | запуск закончился на ограничении провайдера — статус `rate_limit` (HTTP 429, rate limit, quota exceeded, too many requests в трёх последних строках stderr) — при любых изменениях |\n| `empty` | не сбой, ни одного изменённого файла проекта, включая тикет |\n| `artifacts_failed` | ближайший контроль артефактов — `failed` с причинами (в том числе проваленная проверка пункта DoD) |\n| `review_failed` | контроль пройден, ближайшее ревью с вердиктом — `failed` |\n| `accepted` | контроль `all_green`, или `passed` / `legacy` и ревью `passed` |\n| `pending` | контроля или ревью с вердиктом ещё нет (`default` и `error` ревью — не вердикт) |\n\nСбой с изменёнными файлами получает градацию по контролю и пометку\n`crashed_after_work`. Остановленный запуск модели не засчитывается: ни неудачи, ни\nуспеха, ни временного запрета — в том числе прерванный падением раннера или машины.\nАгент, снятый сигналом не остановкой пайплайна (OOM, `kill` по pid агента), — сбой и\nвременный запрет модели.\n\nЗапуск `throttled` модели тоже не засчитывается: ни неудачи, ни успеха, ни\nвременного запрета, и прежний временный запрет он не снимает. Лимит провайдера — не\nдефект модели, а запрет модели останавливал бы и других агентов — например, второй\nроутер, выбравший ту же модель. Статус смотрит только конец stderr: kilo пишет туда\nвывод инструментов и каждый 429, после которого сам повторил запрос и продолжил\nработу, — запуск, упавший потом на другой ошибке, остаётся сбоем. Агента на время\nограничения выводит из выбора health-реестр: CLI-агента — общее правило\n`provider-rate-limit` в `agent-health-rules.yaml` с тем же шаблоном, 15 минут, если у\nагента нет своего правила на этот текст; агента `kind: http` и агента с командой на\nшаге `model_io` — ошибка клиента модели `rate_limit` (запись `model-client-rate_limit`),\n1 час.\n\n**Запреты** действуют только на стадии исполнителя. Неудача — `empty` и\n`artifacts_failed`; успех — пройденный контроль артефактов, даже если ревью потом не\nпройдено.\n\n| Запрет | Область | Условие | Срок |\n|--------|---------|---------|------|\n| постоянный, правило 1 | модель + тип тикета | с последнего снятия неудач ≥ 3, успехов 0 | до снятия человеком |\n| постоянный, правило 2 | модель + тип тикета | с последнего снятия не меньше 10 оценённых запусков, среди последних 10 успехов < 3 | до снятия человеком |\n| временный | модель целиком | последний запуск модели, кроме `stopped` и `throttled`, — сбой | TTL сработавшего правила `agent-health-rules.yaml`, иначе 1 час |\n\nТип тикета — `task_type` контекста или префикс id тикета (`IMPL-12` → `impl`).\nПри выборе агента ключ модели — по записи конфига: у kilo-агента модель из `-m` без\nпровайдера, как хранит kilo (`-m prov/x` → `x`), у прочих — значение `--model` / `-m`\nкак есть, у `kind: http` — поле `model`, иначе id агента. Агент исполнителя с\nзапрещённой моделью пропускается (в логе\n`agent … skipped: model \"…\" — …`); все агенты под запретом — стадия возвращает\n`blocked` (`all_banned`) с причиной, и тикет уходит по `goto.blocked`. Роутер kilo по\nключу роутера не отсеивается: пока агент работает, раннер проверяет ответившие модели\nи, если ответила запрещённая, снимает агента (`MODEL_BANNED agent=… model=…`) и сразу\nберёт следующего агента стадии, даже если файлы изменены: исполнитель пишет прогресс в\nтикет по ходу работы. Тот же агент заново не запускается — модель выбирает его роутер,\nи перезапуск запрещённую модель не обходит; нездоровым агент не помечается, в следующей\nпопытке тикета он снова в списке. Запрещённая модель, ответившая уже после последней\nпроверки, тоже даёт `MODEL_BANNED` и переход к следующему агенту: её результат обычным\nзапуском не засчитывается.\n\nСнятие запрета — событие `unban` (функция `recordUnban` модуля, инструмент MCP —\nотдельно):\n\n```\n{\"type\":\"unban\",\"ts\":\"2026-09-27T10:00:00.000Z\",\"model\":\"<модель>\",\"ticket_type\":\"impl\",\"reason\":\"<почему>\"}\n```\n\nС `ticket_type` снимается постоянный запрет пары, без него — временный запрет модели.\nЗапрета нет — отказ, строка не пишется. Таблица по модели и типу тикета (число\nзапусков по градациям, доля пройденного контроля, доля принятых на ревью, запреты с\nдоказательствами) — `statsTable`. Модуль экспортируется пакетом:\n`workflow-ai/lib/agent-runs.mjs`. Реализация — `src/lib/agent-runs.mjs`, подсчёт\nизменённых файлов — `src/lib/agent-run-changes.mjs`.\n\n## Пулы моделей\n\nПул — запись агента в `pipeline.agents` с полем `models`. Модели берутся из вывода\nкоманды списка, в пул входят те, чей полный id совпал с маской. В списке стадии пул\nзанимает одно место, и на это место раннер ставит конкретную модель — участника пула.\nКаждый запуск поэтому — конкретная модель: в журнале запусков `agent` — id участника,\n`model` — ключ его модели.\n\nВ поставляемом `configs/pipeline.yaml` стадия `execute-task` начинается с двух пулов\nвместо роутеров `kilo/kilo-auto/free` и `kilo/openrouter/free`:\n- `free-kilo` — `kilo/*:free` и `kilo/stealth/space-bunny-alpha`;\n- `free-openrouter` — `openrouter/*:free` без `nvidia/nemotron-3.5-content-safety:free`.\n\nУчастника под тикет у обоих выбирает селектор `jev-select`:\n\n```yaml\n    free-openrouter:\n      command: \"kilo\"\n      args: [\"-m\", \"{model}\", \"--agent\", \"code\", \"--print-logs\", \"--log-level\", \"ERROR\", \"run\", \"--auto\"]\n      workdir: \".\"\n      capabilities: [text]\n      models:\n        list: [\"node\", \".workflow/src/scripts/kilo-models-list.js\"]\n        match:\n          - '^openrouter/nvidia/nemotron-3-ultra-550b-a55b:free$'\n          - '^openrouter/(?!nvidia/nemotron-3\\.5-content-safety:free$)[^/]+/[^/]+:free$'\n        max_per_attempt: 3\n        selector: jev-select\n        scores: [\"node\", \".workflow/src/scripts/model-scores.js\", \"--benchmarks-url\", \"https://openrouter.ai/api/v1/benchmarks?source=artificial-analysis\", \"--models-url\", \"https://openrouter.ai/api/v1/models\", \"--key-file\", \"~/.workflow/secrets/openrouter.key\"]\n        gate: [\"node\", \".workflow/src/scripts/free-quota-gate.js\", \"--url\", \"https://openrouter.ai/api/v1/key\", \"--key-file\", \"~/.workflow/secrets/openrouter.key\", \"--timeout\", \"10\"]\n```\n\n`kilo-free` (роутер `kilo/kilo-auto/free`) остаётся в конфиге обычным агентом\n`target_agents` тестов скилов `execute-task` и `deep-research`; в списках стадий его нет.\n\n### Поля пула\n\n| Поле | Значение | Обязательно | Смысл |\n|------|----------|-------------|-------|\n| `models.list` | непустой массив непустых строк | да | команда списка моделей и её аргументы |\n| `models.match` | непустой массив строк — выражения `RegExp` без флагов и модификаторов (`(?i)` в JS не компилируется, `(?i:…)` — только с Node 23) | да | модель входит в пул, если её полный id совпал хотя бы с одним выражением; порядок участников — по индексу первого совпавшего выражения, при равенстве — порядок вывода команды |\n| `models.max_per_attempt` | целое ≥ 1, по умолчанию 3 | нет | сколько участников пула пробовать за одну попытку тикета |\n| `models.selector` | id агента с командой: не `kind: http` и не пул | нет | агент-селектор участника под тикет |\n| `models.scores` | непустой массив непустых строк, только вместе с `selector` | нет | команда оценок кандидатов для промпта селектора |\n| `models.gate` | непустой массив непустых строк | нет | команда-шлагбаум места пула |\n| `{model}` в `args` | ровно одно вхождение у пула, ни одного у агента без `models` | да | место полного id участника |\n\nВстроенного фильтра «бесплатная» нет: состав задаёт только маска, ею можно собрать и\nплатный пул. Исключить модель — отрицательным просмотром вперёд, как `content-safety`\nвыше. Свойства модели (картинки, инструменты, цена) пул не режут.\n\n**Проверка конфига при старте** (`validateConfig`) отклоняет:\n- `models` у `kind: http`, `models` не объектом, id пула с `@`, id агента вида\n  `<пул>@…` — такие id заняты участниками пула;\n- неверные `list`, `match` (в том числе выражение, которое не компилируется, и\n  модификатор `(?i:…)`), `max_per_attempt`, `selector`, `scores`, `gate`, а также\n  `scores` без `selector`;\n- `{model}` в `args` пула не ровно один раз и `{model}` у агента без `models`;\n- пул в одиночном `stage.agent` (у стадии без списка `agents`);\n- пул в списках стадии с `model_io`: `agents`, `agents_by_type.<тип>.agents` и\n  `default_agents` у стадии без своего списка.\n\n```\nConfiguration validation failed:\n  - Agent \"free-kilo\" is a model pool: args must contain {model} exactly once, found 2\n  - Stage \"ask\" has model_io, but lists model pool \"free-kilo\" in agents: model pools are not allowed on model_io stages\n```\n\nПул в `target_agents` тестов скилов (index.yaml, `--agent` или файл кейса)\n`run-skill-tests.js` отклоняет до первого кейса, `status: error`:\n`Agent(s) '<пул>' are model pools (models): пул моделей нельзя указывать в target_agents, назовите конкретного агента`\n(для файла кейса — с `in target_agents of case <id>`). Пул судьёй (`judge_agent`) или в\nего `escalate_to` — тоже ошибка до прогона.\n\n### Команда списка\n\nРаннер знает только интерфейс stdout команды списка, форматов kilo он не разбирает:\n- строка, начинающаяся с `{`, — JSON `{\"id\": \"<provider/model>\", \"capabilities\":\n  [\"multimodal\"], \"note\": \"<текст>\"}`; обязателен только строковый `id`, `note` идёт\n  только в строку `POOL`;\n- любая другая непустая строка — id без метаданных, поэтому командой списка может быть\n  и `[\"kilo\", \"models\"]`;\n- испорченная строка (JSON не разбирается, нет строкового `id`) — WARN и пропуск; повтор\n  id — первое вхождение.\n\nСпособности участника — `capabilities` пула вместе с `capabilities` строки.\n\nАдаптер `src/scripts/kilo-models-list.js` запускает `kilo models --verbose` и печатает\nвсе модели kilo без фильтрации, по JSON-строке на модель. `capabilities:\n[\"multimodal\"]` — у модели с картинкой на входе. `note` — цена входа и выхода, вызов\nинструментов и признак `isFree` как есть, без единиц. Сбой `kilo` — выход 1, причина в\nstderr. Испорченный объект модели или объект без закрывающей `}` — WARN в stderr, эта\nмодель пропускается, соседние остаются.\n\n```json\n{\"id\":\"kilo/qwen/qwen3.8-27b:free\",\"capabilities\":[\"multimodal\"],\"note\":\"in=0 out=0 tools=true free=true\"}\n```\n\n### Раскрытие пула и участники\n\nПулы раскрываются один раз на процесс раннера, до первой стадии. Команда списка\nзапускается так же, как агенты:\n- рабочий каталог — корень проекта, окружение — с `~/.workflow/agent.env`;\n- на Windows — через shell, кроме команды `node`;\n- через 60 с команда снимается, при остановке пайплайна (SIGINT/SIGTERM) — сразу;\n- одинаковая команда у нескольких пулов (равные массивы) запускается один раз;\n- хвост её stderr идёт в лог строками WARN `models.list stderr: …`.\n\nНа каждый пул — строка `POOL` с составом. Она — единственная защита от платной модели,\nслучайно попавшей в маску:\n\n```\nPOOL agent=\"free-kilo\" members=15 [kilo/stealth/space-bunny-alpha in=0 out=0 tools=true free=true, kilo/nvidia/nemotron-3-ultra-550b-a55b:free in=0 out=0 tools=true free=true, …]\nPOOL agent=\"free-openrouter\" members=0 (exit 1)\n```\n\nПричина пустого пула — `exit <код>`, `timeout 60s`, `aborted` (остановка пайплайна),\n`spawn error …` или `no match`. Модель, чей id участника уже занят агентом конфига,\nпропускается с WARN.\nПул без участников стадию не роняет: его место не выбирается, а стадия получает обычные\n`no_capable_agent`, `all_unhealthy` или `all_banned`. У `no_capable_agent` в этом\nслучае приписка `model pools without members: …`. Id модели не под\n`^[A-Za-z0-9][A-Za-z0-9._:/~-]*$` пропускается с WARN: на Windows аргументы агента идут\nчерез cmd.exe.\n\nУчастник — `<пул>@<полный id>`, например `free-kilo@kilo/qwen/qwen3.8-27b:free`. Этот id\nвидят журнал запусков (поле `agent`), health-реестр, строки `Agent selected:` и `START`,\nистория работы тикета. Запись участника — копия записи пула: `{model}` в `args` заменён\nполным id, поля `models` нет, `pool` — id пула.\n\nКлюч модели участника — полный id без провайдера (`poolside/laguna-s-2.1:free`). Он\nобщий для обоих маршрутов и совпадает с прежними ключами журнала; по нему действуют\nзапреты модели. Пока механика роутеров не удалена, ключ kilo-запуска в журнале берётся\nиз базы kilo (раздел «Фактическая модель kilo-агента»). Поэтому участник, снятый до\nпервого шага (первый 429 приходит через 16–27 с), пишет в журнал `model: null`.\n\n### Выбор участника\n\nМесто пула проходит фильтры стадии, если их проходит хотя бы один участник. Кандидаты\nместа — участники в порядке маски, которые:\n1. покрывают `required_capabilities` тикета;\n2. здоровы по health-реестру — ключ id участника, то есть маршрут;\n3. не под запретом модели — на стадии со скилом `execute-task`;\n4. не пробовались в этой попытке;\n5. ещё не запускались на этом тикете: нет события `run` с тем же `ticket` и ключом\n   модели участника. Фильтр мягкий: если таких нет, кандидаты — прошедшие п. 1–4.\n\nМесто уходит из попытки, когда:\n- пробовано `max_per_attempt` его участников;\n- подходящих непробованных участников не осталось;\n- шлагбаум закрыл место.\n\nНеудача участника с пустым diff — следующий участник того же места, затем следующее\nместо списка. При изменённых артефактах fallback, как и раньше, не идёт. Строка выбора\nпрежняя:\n\n```\nAgent selected: free-kilo@kilo/qwen/qwen3.8-27b:free (attempt 1, compatible=[free-kilo, free-openrouter, gpt-luna, …])\n```\n\nПравила health участника в `agent-health-rules.yaml` ищутся по id пула: состав пула\nизвестен только после раскрытия, в файле его не описать. Пометка нездоровья и проверка\nздоровья — по id участника. В поставляемом файле `free-kilo` и `free-openrouter`\nнаследуют правила `kilo-free` (`extends`): участник, получивший 429 провайдера,\nснимается онлайн и выходит из выбора на 15 минут.\n\n### Шлагбаум\n\n`models.gate` — команда, которую раннер запускает перед каждым запуском участника пула,\nдо селектора. Запуск — по правилам команды списка, но с таймаутом 15 с. Ответ — блок\nRESULT и выход 0:\n\n```\n---RESULT---\nstatus: open\nremaining: 37\n---RESULT---\n```\n\n- `open` — участник запускается.\n- `closed` — место закрыто до ближайших 00:00 UTC: участники не запускаются, селектор не\n  вызывается, стадия берёт следующее место списка. Закрытие — запись health-реестра по\n  id пула (правило `pool-gate-closed`, TTL `until_utc_midnight`, не меньше 30 минут), так\n  что оно держится во всех стадиях и после перезапуска раннера.\n- Выход ≠ 0, таймаут, нет блока RESULT или `status` — `error`: WARN, место не\n  закрывается.\n- Остановка пайплайна снимает шлагбаум сразу; после неё ни селектор, ни участники не\n  запускаются.\n\nСтрока лога на каждый вызов:\n\n```\nGATE agent=\"free-openrouter\" status=open remaining=37 until=- duration_ms=1085\nGATE agent=\"free-openrouter\" status=closed remaining=0 until=2026-09-29T00:00:00.000Z duration_ms=1100\n```\n\nСкрипт `src/scripts/free-quota-gate.js --url <https://…/key> --key-file <путь>\n[--timeout <с>]` делает один `GET` с ключом, без повторов, с таймаутом по умолчанию\n10 с. Он читает `data.free_model_daily_requests` — дневной счётчик бесплатных запросов\nаккаунта OpenRouter: один на все модели `:free`, 50 в сутки при покупках меньше 10\nкредитов, сброс в 00:00 UTC.\n- `remaining` > 0 — `status: open`, ≤ 0 — `status: closed`; кроме `remaining` скрипт\n  печатает `used` и `limit`.\n- Поля нет, ответ не JSON, ошибка сети или HTTP не 2xx — `status: error`, `error_class`,\n  `error`, выход 1.\n\nЧтение счётчика модель не вызывает и запрос не тратит. В поставляемом конфиге шлагбаум\nтолько у `free-openrouter`: маршруты `kilo/*` счётчик аккаунта OpenRouter не тратят.\n\n### Селектор\n\n`models.selector` — id агента с командой, который упорядочивает кандидатов места под\nтикет. Раннер вызывает его один раз на место пула в попытке — при первом выборе\nучастника этого места, если:\n- в контексте есть тикет;\n- кандидатов не меньше двух;\n- селектор здоров по health-реестру;\n- шлагбаум пула не закрыл место.\n\nИначе вызова нет, берётся порядок маски. Следующий участник того же места в этой\nпопытке — следующий по ранжиру, без нового вызова; в следующей попытке — новый вызов.\n\nПромпт идёт через stdin: инструкция и JSON-блок в ограждении ```` ```json ````,\nкандидатов — первые 10 в порядке маски. DoD — текст секции «Критерии готовности\n(Definition of Done)» тикета, не больше 4000 символов:\n\n```json\n{\n  \"pool\": \"free-kilo\",\n  \"ticket\": {\"id\": \"IMPL-12\", \"type\": \"impl\", \"title\": \"…\", \"dod\": \"…\"},\n  \"candidates\": [\n    {\"id\": \"kilo/qwen/qwen3.8-27b:free\", \"capabilities\": [\"text\", \"multimodal\"], \"note\": \"in=0 out=0 tools=true free=true\", \"scores\": {\"intelligence\": 33.7, \"coding\": 68.1, \"agentic\": 45.8}},\n    {\"id\": \"kilo/stealth/space-bunny-alpha\", \"capabilities\": [\"text\", \"multimodal\"], \"note\": \"in=0 out=0 tools=true free=true\", \"scores\": null}\n  ],\n  \"scores_citation\": \"Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings).\"\n}\n```\n\nОтвет — id кандидатов через запятую, от самого подходящего:\n\n```\n---RESULT---\nranking: kilo/qwen/qwen3.8-27b:free, kilo/stealth/space-bunny-alpha\nconfidence: 0.6\ncost_usd: 0.00007518\n---RESULT---\n```\n\nId не из кандидатов пропускаются, кандидаты вне ранжира идут после него в порядке маски.\nОшибка — `status: error`, `error_class`, `error` и выход 1. Строка лога на каждый вызов:\n\n```\nSELECT agent=\"free-kilo\" selector=\"jev-select\" candidates=10 ranked=10 member=\"kilo/inclusionai/ling-3.0-flash-fin:free\" fallback=none cost_usd=0.00007518 duration_ms=1286\n```\n\n| `fallback` | Когда | Участник |\n|------------|-------|----------|\n| `none` | в ранжире есть хотя бы один кандидат | первый по ранжиру |\n| `unknown_id` | поля `ranking` нет или в нём ни одного id кандидатов | порядок маски |\n| `error` | выход ≠ 0 или `status: error` | порядок маски |\n| `timeout` | селектор снят через 60 с | порядок маски |\n\nСбой помечает селектор в health-реестре по классу ошибки: `auth` и `rate_limit` — 1 час;\n`server`, `timeout`, `network` — 5 минут; прочие классы не помечают. Селектор, снятый\nонлайн-сканом по своему правилу health, помечается на класс и TTL этого правила.\nНездоровый селектор не вызывается, в лог идёт\nINFO `pool \"…\": selector \"…\" unhealthy in registry — mask order`. Журнал запусков и\nистория тикета вызов селектора не пишут.\n\nСелектор поставляемого конфига `jev-select` — модель решений Jev через обёртку\n`src/scripts/decisions-select.js --model <id> --url <https://…/decisions> --key-file\n<путь> [--timeout <с>]`:\n- один вопрос decisions типа `choice`, варианты — кандидаты;\n- ранжир — все кандидаты по убыванию вероятности, при равенстве — меньший индекс;\n- `--timeout 15`: все повторы клиента укладываются в 3 × 15 + 6 = 51 с, меньше 60 с\n  раннера.\n\nЦена — `usage.cost` ответа: живой вызов 2026-09-28 с 10 кандидатами — $0.000075. Вызовов\nне больше одного на место пула в попытке — до 12 на тикет при двух пулах и 6 попытках.\n\n### Оценки\n\n`models.scores` — команда оценок кандидатов для промпта селектора, задаётся только\nвместе с `selector`. При раскрытии пула раннер пишет в её stdin полные id участников, по\nодному на строку, и читает из stdout один JSON:\n\n```json\n{\"as_of\":\"2026-09-27T00:01:09.591Z\",\"citation\":\"Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings).\",\"scores\":{\"kilo/qwen/qwen3.8-27b:free\":{\"intelligence\":33.7,\"coding\":68.1,\"agentic\":45.8}}}\n```\n\nОценки пул не режут и не переупорядочивают — это только вход селектора. Одинаковая\nкоманда у нескольких пулов запускается один раз. Сбой команды — кандидаты без оценок\n(`\"scores\": null`), селектор всё равно вызывается. Строка лога на пул:\n\n```\nSCORES agent=\"free-kilo\" scored=8/15 as_of=\"2026-09-27T00:01:09.591Z\" citation=\"Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings).\"\nSCORES agent=\"free-openrouter\" scored=0/16 (exit 1)\n```\n\nСкрипт `src/scripts/model-scores.js --benchmarks-url <url> --models-url <url>\n--key-file <путь> [--cache <путь>] [--timeout <с>]`:\n- **Источник** — оценки Artificial Analysis (intelligence, coding, agentic) из\n  `GET https://openrouter.ai/api/v1/benchmarks?source=artificial-analysis` и каталог\n  `GET https://openrouter.ai/api/v1/models`, оба запроса с ключом. Адреса — только из\n  аргументов.\n- **Сопоставление:** полный id без первого сегмента (`kilo/qwen/qwen3.8-27b:free` →\n  `qwen/qwen3.8-27b:free`) → запись каталога с тем же `id` → её `canonical_slug` →\n  строка оценок с тем же `model_permaslug`. Участника без записи каталога или без\n  оценок в выводе нет.\n- **Кэш** — `--cache`, по умолчанию `~/.workflow/cache/model-scores.json` (или\n  `$WORKFLOW_HOME/cache/…`), общий для проектов машины. Оба GET идут заново, когда файла\n  нет, он не читается или другой версии; кэшу 24 часа или дата загрузки в будущем\n  (сбитые часы); ключа участника нет в каталоге\n  кэша и кэшу не меньше часа. Загрузка не удалась — прежний кэш и WARN в stderr, кэша\n  нет — выход 1. Запись — через временный файл и rename.\n- **`--timeout`** — на каждый GET, по умолчанию 20 с.\n\nАтрибуция данных оценок — `meta.citation` источника. Она хранится в кэше, печатается в\nстроке `SCORES` и идёт в промпт селектора:\n\n> Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings).\n\n### Обнуление истории модели\n\nСобытие `reset` журнала запусков обнуляет историю модели:\n\n```\n{\"type\":\"reset\",\"ts\":\"2026-09-28T12:00:00.000Z\",\"model\":\"poolside/laguna-s-2.1:free\",\"reason\":\"<почему>\"}\n```\n\nЗапуски модели, записанные в журнале раньше её последнего `reset`, выпадают из градаций.\n«Раньше» — по позиции в журнале, как у `unban`. Вместе с градациями такие запуски уходят\nиз постоянных и временных запретов и из `statsTable`, то есть из MCP `get_model_stats`.\n- Окна контроля и ревью строятся по-прежнему со всеми запусками: контроль исключённого\n  запуска не засчитывается соседнему.\n- Запуски с `model: null` не обнуляются.\n- Журнал только дописывается.\n- Фильтр 5 выбора участника смотрит сырые события, `reset` на него не влияет.\n\nЗапись — функция `recordReset(projectRoot, {model, reason})` модуля журнала, рядом с\n`recordUnban`. Результат — `{ok: true, event}` или `{ok: false, code, error}` с кодами\n`BAD_INPUT`, `READ_FAILED`, `NO_RUNS` (в журнале нет запуска с этим ключом — защита от\nопечатки) и `WRITE_FAILED`. Скрипт запускается из корня проекта:\n\n```\nnode .workflow/src/scripts/reset-model-history.js --model poolside/laguna-s-2.1:free --reason \"история роутеров\"\n```\n\nУспех — RESULT `status: ok`, `model: <ключ>`, выход 0. Ошибка — `status: error`, `code`,\n`error`, выход 1: коды `recordReset`, `BAD_INPUT` за неверные аргументы и `NO_PROJECT`,\nесли корень проекта не найден. MCP покажет обнуление после обновления зависимости\n`workflow-ai` в workflow-mcp.\n\n## Runner-стадии\n\nВ системе поддерживаются различные типы стадий для управления процессами разработки:\n\n### Human Gate\n\n`human-gate` — стадия ручного контроля, которая требует вмешательства человека для продолжения выполнения пайплайна. Используется для критических точек, где необходима ручная проверка или утверждение.\n\n**Условия срабатывания:**\n- Стадия `manual-gate-human` блокирует пайплайн до ручного снятия gate\n- Gate снимается через команду `move-ticket.js <id> unblock`\n- Поддерживает настройку таймаутов и условий повторных попыток\n\n**Пример конфигурации pipeline.yaml:**\n```yaml\nstages:\n  - name: manual-gate-human\n    type: manual-gate-human\n    config:\n      timeout: 3600  # 1 hour\n      max_attempts: 3\n      message: \"Requires human approval before deployment\"\n```\n\nПример полного файла `pipeline.yaml` доступен в `docs/samples/pipeline-with-human-gate.yaml`.\n\n### Autoblock notifications\n\nДля автоматического блокировки тикетов при возникновении проблем используется механизм `mark-blocked`. Блокированные тикеты получают дополнительные поля в frontmatter для отслеживания причин и попыток:\n\n- `auto_blocked_reason` — причина автоматической блокировки\n- `auto_blocked_attempts` — количество попыток разблокировки\n- `auto_blocked_at` — время автоматической блокировки\n\n## Безынструментные агенты\n\nБезынструментный агент — модель без инструментов и без доступа к файлам проекта:\nвход для неё собирают и результат записывают скрипты стадии. Записи такого агента\nбывают двух видов:\n\n- `kind: http` — модель вызывает сам раннер по HTTP;\n- агент с командой и маркером `tool_less: true` — обёртка, которая передаёт модели\n  промпт и печатает её ответ, инструментов модели не даёт и в проекте читает только\n  изображения, названные в промпте: `src/scripts/decisions-judge.js` (промпт из\n  stdin, ключ из файла) или `src/scripts/claude-judge.js` (Claude без инструментов,\n  изображения из промпта — раздел «Claude без инструментов — claude-judge.js»).\n\nТакая модель подключается правкой `configs/pipeline.yaml`, без правок кода.\n\n### Запись агента\n\n```yaml\npipeline:\n  agents:\n    vision-chat:\n      kind: http\n      protocol: chat\n      url: \"https://openrouter.ai/api/v1/chat/completions\"\n      model: \"<id мультимодальной модели>\"\n      auth: { file: \"~/.workflow/secrets/openrouter.key\" }\n      timeout_s: 120\n      capabilities: [text, multimodal]\n    decisions-cli:\n      command: \"node\"\n      args: [\".workflow/src/scripts/decisions-judge.js\", \"--model\", \"<id модели решений>\",\n             \"--url\", \"https://openrouter.ai/api/alpha/decisions\",\n             \"--key-file\", \"~/.workflow/secrets/openrouter.key\"]\n      prompt_stdin: true\n      tool_less: true\n      capabilities: [text]\n```\n\n| Поле | Значения | Обязательно |\n|------|----------|-------------|\n| `kind` | `cli` (по умолчанию) — агент с `command`; `http` — модель по HTTP, без `command` | нет |\n| `protocol` | `chat` \\| `decisions` | при `kind: http` |\n| `url` | адрес `https://`; `http://` — только localhost, 127.0.0.1, ::1 (ключ уходит в заголовке) | при `kind: http` |\n| `model` | id модели у провайдера | при `kind: http` |\n| `auth` | `{ env: <ИМЯ> }` \\| `{ file: <путь> }` \\| `{ kilo_oauth: true }` — ровно одна форма | при `kind: http` |\n| `timeout_s` | число > 0, по умолчанию 120; ограничивает одну попытку — с повторами вызов длится до 3 × `timeout_s` + 6 с | нет |\n| `tool_less` | `true` — агент с командой не даёт модели инструментов и в проекте не читает ничего, кроме изображений, названных в промпте; заявление автора записи: раннер поле не читает и не проверяет | нет |\n| `capabilities` | как у остальных агентов; `multimodal` — модель принимает изображения | как сейчас |\n\n`command` и `args` у `kind: http` не задаются. Запись проверяется при старте\nпайплайна; ошибка останавливает запуск с кодом 1 и называет агента и поле.\n\n### Протоколы\n\n- `chat` — формат OpenAI chat completions: системное сообщение и сообщение\n  пользователя, поле `tools` не отправляется. Ответ — текст\n  `choices[0].message.content` и источники из `annotations` (`url_citation`).\n  Изображения — частями `image_url` с data URL: PNG, JPEG или WebP, до 5 МБ на\n  файл, до 8 на запрос. Приём `image_url` конкретной моделью OpenRouter не проверен.\n- `decisions` — типизированная оценка OpenRouter: тело `{ model, state, questions }`,\n  ответ — вероятности уровней и уверенность по каждому вопросу. Изображений не принимает.\n\nОбщее: ключ `Authorization: Bearer`; прокси из `HTTPS_PROXY` / `HTTP_PROXY` /\n`ALL_PROXY` (туннель CONNECT, только для `https://`); до двух повторов с паузами\n2 и 4 с при HTTP 429, 500, 502, 503 и сетевой ошибке. Ошибка получает класс:\n\n| Класс | Когда |\n|-------|-------|\n| `no_key` | переменная из `auth.env` пуста; файла ключа (`auth.file`) нет или он пуст; файла kilo нет; токен kilo истёк |\n| `auth` | HTTP 401, 403 |\n| `rate_limit` | HTTP 429 после повторов |\n| `server` | HTTP 5xx после повторов |\n| `timeout` | истёк `timeout_s` |\n| `network` | соединение с сервером или прокси не установлено после повторов |\n| `bad_request` | прочие HTTP 4xx; изображения для `decisions`; вложение сверх ограничений; `http://` не на свою машину |\n| `bad_response` | ответ не JSON; нет полей протокола; нет ответа на вопрос; уровень вне 1..n |\n| `aborted` | запрос снят остановкой пайплайна (SIGINT/SIGTERM) |\n\nРеализация — `src/lib/model-client.mjs`.\n\n### Авторизация\n\n- `{ env: <ИМЯ> }` — ключ только из переменной окружения раннера или машинного\n  `~/.workflow/agent.env`. В репозиторий и в `pipeline.yaml` ключ не пишется.\n  Переменную окружения наследуют все процессы раннера, в том числе агенты стадий.\n- `{ file: <путь> }` — ключ из файла (одна строка; `~` — домашний каталог), как у\n  claude и kilo: в окружении процессов его нет. Нет файла или он пуст — `no_key`.\n- `{ kilo_oauth: true }` — токен `kilo.access` из `~/.local/share/kilo/auth.json`;\n  истёкший токен — ошибка `no_key` с подсказкой `kilo auth login`.\n\nКлюч не попадает ни в лог, ни в сообщения ошибок. На Windows имя переменной\n(ключа и прокси) ищется без учёта регистра, как его видят CLI-агенты:\n`Model_Api_Key` в системе находится по `auth: { env: MODEL_API_KEY }`.\n\n### Слой оценки\n\nОдин вход и выход для обоих протоколов (`src/lib/model-evaluate.mjs`): скриптам\nстадии не нужно знать протокол выбранной модели.\n\n```json\n{\n  \"data\": \"<строка или объект — что оценивается>\",\n  \"images\": [\"<путь к изображению>\"],\n  \"questions\": [{ \"id\": \"dod-3\", \"text\": \"<вопрос>\", \"levels\": [\"<уровень 1>\", \"…\", \"<уровень n>\"] }]\n}\n```\n\nВыход — `{ answers: { <id>: { level, confidence, probabilities, reason } }, model,\nusage, cost_usd, duration_ms }`, `level` — номер уровня 1..n, уровней от 2 до 10.\nУ `decisions` уровень — наибольшая вероятность (при равенстве — меньший уровень),\n`confidence` — из ответа. У `chat` модель отвечает JSON\n`{\"answers\":[{\"id\",\"level\",\"reason\"}]}`, `confidence` — `null`; из текста берётся\nпервый JSON-объект с массивом `answers`, уровень — целое число или строка из цифр.\nНет ответа на вопрос или уровень вне диапазона — `bad_response`, уровня по умолчанию нет.\nПорог прохода решает потребитель.\n\n### Стадия с обменом model_io\n\n```yaml\n    review:\n      agents: [decisions-cli, vision-chat]\n      model_io:\n        prepare: \"<путь к node-скрипту от корня проекта>\"\n        apply: \"<путь к node-скрипту от корня проекта>\"\n        options: { }          # необязательно; передаётся обоим скриптам\n```\n\nКакого бы агента ни выбрал `resolveAgent` — `kind: http` или с командой, — стадия\nс `model_io` идёт в три шага. Скил стадии агент не исполняет:\n\n1. **prepare** — `node <prepare> \"<промпт стадии>\"`. Переменные: `WORKFLOW_MODEL_AGENT`,\n   `WORKFLOW_MODEL_CAPABILITIES` (JSON), `WORKFLOW_MODEL_IO_OPTIONS` (JSON `options`).\n   Результат `status: ready` с `request_file: <путь к входу слоя оценки>` ведёт\n   к шагу 2. Любой другой результат — результат стадии: так prepare сам закрывает\n   стадию, когда спрашивать нечего. `ready` без `request_file` или нечитаемый JSON —\n   `status: error` с `error_class: bad_prepare`: ошибка скрипта отличима от отказа модели.\n2. **Модель** — по виду агента:\n   - `kind: http` — раннер зовёт слой оценки, все вопросы одним запросом;\n   - агент с командой — на каждый вопрос отдельный запуск с промптом судьи тестов\n     скилов (раздел «Судья тестов скилов»): в `## Rubric` — строки `| n | <уровень> |`\n     из `levels` вопроса, в `## Target Agent Output` — `data` (объект — JSON), а при\n     непустом `images` ещё строка `Изображения:` и пути по одному в строке, в `## Task` —\n     текст вопроса. Ответ — блок `---RESULT---` со `score` 1..5 и необязательными\n     `reason`, `confidence`, `probabilities`, `model`, `cost_usd`; раннер собирает ответы в\n     выход той же формы, что у слоя оценки (`usage: null`; `cost_usd` — сумма по\n     вопросам или `null`, если хоть один ответ цены не назвал). Вопрос не ровно с\n     пятью уровнями — `bad_request` до запуска агента; ответ без балла — `unparsed`;\n     ответ с `error_class` — ошибка этого класса. Переоценки по `escalate_to` нет.\n     В лог вместо текста промпта — строка `question=<id> prompt_chars=<длина>`.\n\n   Ответ раннер пишет в `.workflow/state/model-io/<стадия>-<run_id пайплайна>-<id вызова>.json`.\n   Ошибка — результат стадии `status: error` с `error_class`, шаг 3 не выполняется.\n3. **apply** — `node <apply> \"<промпт стадии>\"` с теми же переменными плюс\n   `WORKFLOW_MODEL_REQUEST` и `WORKFLOW_MODEL_RESPONSE` (пути файлов). Его\n   `---RESULT---` — результат стадии.\n\nТаймаут prepare и apply — `execution.timeout_per_stage`, одной попытки вызова\nмодели — `timeout_s` агента `kind: http`, одного запуска агента с командой —\n`execution.timeout_per_stage`. Остановка пайплайна снимает запрос к модели сразу и\nне запускает apply: результат — `status: error`, `error_class: aborted`. В лог пишется строка\n`MODEL_IO agent=\"…\" model=\"…\" status=… prepare_ms=… model_ms=… apply_ms=… cost_usd=…`.\n\nОшибки `auth`, `rate_limit`, `server`, `timeout`, `network` — у агента с командой это\n`error_class` его ответа — помечают агента в health-реестре, как падение CLI-агента,\nи стадия переходит к следующему агенту списка. Остальные классы (`no_key`,\n`bad_request`, `bad_response`, `bad_prepare`, `aborted`, `unparsed` и прочие классы\nиз ответа агента с командой) агента не помечают: стадия\nуходит по `goto.error`, а следующая попытка стадии (по её счётчику) берёт\nследующего агента. В истории работы тикета такой запуск записывается как `error`.\nСбой процесса prepare, apply или агента с командой (выход ≠ 0 без `---RESULT---`,\nтаймаут) обрабатывается как падение CLI-агента.\n\n**Выбор модели.** Стадия перечисляет агентов по приоритету, контекст несёт\n`required_capabilities`. Остаются агенты, у которых есть все требуемые способности:\nнужны изображения (`[\"multimodal\"]`) — только мультимодальные. Попытка N берёт N-го\nиз оставшихся по кругу, первая — первого по приоритету.\n\nПроверка конфига требует файлы `prepare` и `apply` на диске от корня проекта; путь\n`.workflow/src/…`, которого нет, ищется ещё и по `src/…` — так конфиг проходит\nпроверку в репозитории workflow-ai, где `.workflow/` нет (CI) или он ведёт на\nустановленную версию. Запуск берёт путь как записан.\n\n### Защита от ошибочного назначения\n\nПроверка конфига при старте пайплайна (`validateConfig`) отклоняет:\n\n- агента `kind: http` в `stage.agent`, `stage.agents` или\n  `stage.agents_by_type.<тип>.agents` стадии без `model_io`;\n- агента `kind: http` в `pipeline.default_agents` и `pipeline.default_agent` — всегда.\n\nТесты скилов (`run-skill-tests.js`) не берут агента `kind: http` исполнителем:\n`target_agents` скила или кейса и `--agent` с таким агентом завершают прогон\nошибкой до первого вызова модели. Судьёй (`judge_agent`) — тоже: судья — агент с\nкомандой (раздел «Судья тестов скилов»).\n\nСпособности от ошибочного назначения не защищают: фильтр `resolveAgent`\nпропускает агента, у которого есть все требуемые способности, а `[text]` есть почти\nу всех. Поэтому защита строится на виде записи.\n\nАгента с командой в стадии с `model_io` проверка не отклоняет: он отвечает на\nвопросы по контракту судьи, а не исполняет скил. Агент с инструментами и доступом\nк репозиторию (`claude` с `--permission-mode bypassPermissions`, `kilo run --auto`)\nв такой стадии может прочитать файлы проекта сам. Безынструментность агента с\nкомандой — маркер `tool_less: true`, заявление автора записи; раннер его не проверяет.\n\n### Как добавить модель\n\n1. Добавить в `pipeline.agents` запись `kind: http` или агента с командой без\n   инструментов у модели, с `tool_less: true` (примеры выше).\n2. Ключ — в файле: `auth: { file: <путь> }` у `kind: http`, аргумент обёртки у агента\n   с командой (`--key-file` у `decisions-judge.js`).\n3. Вписать агента в список `agents` стадии с `model_io` — по приоритету.\n4. Для модели с изображениями — добавить `multimodal` в `capabilities`. Агент с\n   командой получает изображения путями в строках после `Изображения:` и сам\n   передаёт их модели (так делает `claude-judge.js`).\n\n## Судья тестов скилов\n\nL2-оценку в тестах скилов (`src/scripts/run-skill-tests.js`) даёт судья — агент\nс командой из `pipeline.agents`, названный в `execution.judge_agent` файла\n`tests/index.yaml` скила. Файлы скилов правятся через коуча. У системы нет\nотдельной ветки ни для конкретной модели, ни для её протокола или ключа: судья\nполучает текстовый промпт и отвечает текстом.\n\n### Промпт и ответ судьи\n\nПромпт — рубрика, вывод исполнителя с файлами тикета и критерий кейса (секции\n`## Rubric`, `## Target Agent Output`, `## Task`). Ответ — блок `---RESULT---`:\n\n| Поле | Обязательно | Что |\n|------|-------------|-----|\n| `score` | да | балл 1..5; попытка проходит при 4 и выше |\n| `confidence` | нет | уверенность 0..1 — по ней работает переоценка |\n| `cost_usd` | нет | цена ответа |\n| `model`, `probabilities` | нет | модель из ответа и вероятности уровней (JSON) |\n| `status: error`, `error_class`, `error` | при сбое | ответ без балла: класс и текст сбоя |\n\nОтвет без балла и балл вне 1..5 — ошибка попытки, а не балл по умолчанию.\n`prompt_stdin: true` в записи агента — промпт через stdin, а не последним\nаргументом: на Windows аргумент ограничен 32767 символами.\n\n### Модель с другим протоколом — CLI-обёртка\n\nМодель решений (OpenRouter `decisions`: вероятности уровней вместо текста)\nподключается обёрткой `src/scripts/decisions-judge.js`. Она берёт уровни из\nтаблицы рубрики (`| n | текст |`, `src/lib/rubric-levels.mjs`), спрашивает модель\nи печатает `score` (самый вероятный уровень, при равенстве — меньший) и\n`confidence`. Модель, адрес и файл ключа — аргументы агента:\n\n```yaml\n    jev:\n      command: \"node\"\n      args: [\".workflow/src/scripts/decisions-judge.js\", \"--model\", \"typesafe/jev-1.13\",\n             \"--url\", \"https://openrouter.ai/api/alpha/decisions\",\n             \"--key-file\", \"~/.workflow/secrets/openrouter.key\"]\n      prompt_stdin: true\n      escalate_to: claude-opus   # переоценка и фоллбек\n      escalate_below: 0.8        # уверенность ниже — переоценка\n      escalation_share: 0.292    # доля переоценки — для оценки цены\n      cost_per_call: 0.0001\n```\n\nКлюч обёртка читает сама из файла `--key-file` (одна строка, `~` — домашний\nкаталог), как claude и kilo: в переменных окружения, которые наследуют все\nпроцессы, его нет. Нет файла — ответ `error_class: no_key`. Адрес прокси или\nсервера в тексте сетевой ошибки заменяется на `[address]` / `[host:port]`.\n**Выводы исполнителей и содержимое тестовых тикетов уходят в OpenRouter и\nTypeSafe** (согласие стейкхолдера — 2026-09-26).\n\n### Переоценка и фоллбек\n\nПоля записи агента-судьи:\n\n- `escalate_to` — агент с командой, который переоценивает; без него переоценки нет;\n- `escalate_below` — уверенность ниже порога или её отсутствие в ответе — попытку\n  переоценивает `escalate_to`, итог — его балл;\n- ответ без балла (сбой судьи) — тоже `escalate_to`, с пометкой `fallback: <класс>`;\n  предупреждение — одно на класс сбоя за прогон. Прогон не падает.\n\nСудья по умолчанию во всех скилах — `jev` с переоценкой `claude-opus` (с\n2026-09-26, по перемеру согласия: pass/fail 94.7%, при пороге 0.8 на оставшихся\nоценках 100%). Таймаут судьи — `execution.judge_timeout_s` скила (по умолчанию\n180 с); у обёртки свой `--timeout` на запрос к модели.\n\n### Запись вызова судьи\n\nПо каждой попытке раннер пишет `current/<agent>/trial-<N>.judge.json` рядом с\n`trial-<N>.md`, и при ошибке судьи тоже. Записи попыток, которых в прогоне нет,\nснимаются. Поля:\n\n| Поле | Что |\n|------|-----|\n| `judge_agent` | судья |\n| `input` | `rubric_file`, `rubric`, `criterion`, `agent_output`, `ticket_files` |\n| `prompt`, `raw_output` | промпт и ответ судьи как есть |\n| `own_score` | балл этого судьи |\n| `score`, `passed` | итог попытки (после переоценки или фоллбека) |\n| `confidence`, `probabilities`, `model`, `cost_usd` | поля ответа судьи |\n| `escalated`, `escalation` | переоценка по уверенности и запись вызова `escalate_to` |\n| `fallback`, `fallback_detail` | класс и текст сбоя, из-за которого оценку дал `escalate_to` |\n| `duration_ms` | длительность |\n| `error`, `error_class` | ошибка судьи — попытка `errored` |\n\n### Цена в оценке перед прогоном\n\nЦена вызова судьи — `cost_per_call` его записи; с `escalate_to` к ней добавляется\n`escalation_share` × цена `escalate_to`. Без `cost_per_call` — $0.02, без\n`escalation_share` — переоценка каждой оценки; о недостающем поле — предупреждение.\nРядом печатается худший случай — судья не дал балла ни разу (нет ключа, сбой), и\nкаждую оценку дал ещё и `escalate_to`.\n\n### Перемер согласия судей\n\n```bash\n# записи прогона с судьёй, у которого есть переоценка: оценки судьи переоценивает его escalate_to\nnode src/scripts/compare-judges.js --judge claude-opus \\\n  --out .workflow/reports/judge-agreement-<дата>.md \\\n  --disagreements .workflow/reports/judge-agreement-<дата>/\n\n# записи прогона с судьёй без переоценки: их переоценивает судья с уверенностью\nnode src/scripts/compare-judges.js --judge jev --out … --disagreements …\n```\n\nСкрипт переоценивает сохранённые записи судьёй `--judge` без запуска исполнителей\nи сравнивает с баллом записи. Судья оценивает сам, без переоценки. Отчёт даёт:\n\n- совпадение точное, ±1 и pass/fail;\n- матрицу 5×5 и разбивку по скилам;\n- таблицу порогов уверенности 0.7 / 0.8 / 0.95: доля переоценки, совпадение на\n  оставшихся, сколько расхождений проходит мимо порога — только когда `--judge`\n  сообщает уверенность;\n- цену.\n\nКаждое расхождение pass/fail — отдельный файл с входом и обоими ответами. Записи с\nошибкой судьи пропускаются и считаются отдельно. У записи, балл которой дал\n`escalate_to` (переоценка или фоллбек), судьёй записи считается он. Запись, балл\nкоторой дал сам `--judge`, пропускается: судья совпал бы сам с собой. `--skill <имя>`\nсужает выборку. Перед вызовами — число вызовов, цена и вопрос; `--yes` вопрос\nпропускает. Записи есть, а не сравнена ни одна (нет ключа, все с ошибкой или с\nбаллом самого `--judge`) — код выхода 1.\n\nКогда записи сделаны судьёй с переоценкой, согласие перемеряет его `escalate_to`:\nон переоценивает оценки судьи, не ушедшие на переоценку, — именно те, что попадают\nв итог без проверки. Порог уверенности так не перемерить: оценки ниже порога уже\nушли на переоценку. Для таблицы порогов нужен прогон с судьёй без переоценки и\n`--judge` с уверенностью.\n\nРеестр агентов оба скрипта берут из `.workflow/config/pipeline.yaml` проекта, а это\nкопия конфига установленной версии workflow-ai; другой конфиг — `--pipeline <путь>`.\nСкрипт-обёртка в записи агента (`.workflow/src/scripts/decisions-judge.js`) — тоже\nиз установленной версии: пока её нет в `.workflow/src/scripts`, судья отвечает\nсбоем, и каждую оценку даёт `escalate_to`.\n\n## Формат DoD 2 и ревью по evidence\n\nТикет с `dod_format: 2` во frontmatter несёт под каждым пунктом «Критериев\nготовности» машиночитаемую проверку. Детерминированные пункты закрывает скрипт,\nпрозаические и пункты со скриншотами оценивает модель стадии ревью — по evidence,\nкоторые собрали скрипты, а не по разделу Result исполнителя. Разбор записи и\nисполнитель проверок — `src/lib/check-runner.mjs`.\n\n### Формы проверки\n\nПроверка — вложенный пункт с отступом под пунктом DoD `- [ ] …`: ключи латиницей,\nзначения в обратных кавычках, пары через запятую. У пункта ровно одна форма; прочие\nвложенные строки, которые не начинаются с ключа проверки, не учитываются.\n\n```markdown\n## Критерии готовности (Definition of Done)\n\n- [ ] Раннер сохраняет запись вызова судьи по каждой попытке\n  - check: `node -e \"process.exit(require('fs').existsSync('out/judge.json') ? 0 : 1)\"`, expect: `exit 0`\n- [ ] Прежние тесты раннера зелёные\n  - check: `npm test`, expect: `exit 0`, regression: `true`\n- [ ] Текст ошибки понятен пользователю\n  - prose: `понятность формулировки командой не проверить`\n- [ ] Кнопка «Экспорт» стоит справа от поиска\n  - visual: `.workflow/evidence/screens/IMPL-041-*.png`\n```\n\n| Форма | Значение | Кто оценивает |\n|-------|----------|---------------|\n| `check` + `expect` | одна команда (ограничения — ниже) и ожидание | скрипт, без модели |\n| `check` + `expect` + `regression` | значение `` `true` `` — в обратных кавычках, иначе запись не разобрана; проверка зелёная и до работы: прогон существующего теста или `npm test` | скрипт, без модели |\n| `prose` | непустая причина, почему командой не проверить | модель стадии ревью |\n| `visual` | путь или маска изображений от корня проекта; `*` и `?` действуют внутри одного сегмента пути; в список идут только PNG, JPEG, WebP внутри корня; файлы кладёт исполнитель тикета | агент стадии ревью со способностью `multimodal` |\n\n| `expect` | Проходит, когда |\n|----------|-----------------|\n| `exit <N>` | код возврата равен N |\n| `stdout contains <текст>` | stdout содержит текст |\n| `stdout not contains <текст>` | stdout не содержит текст |\n| `stdout matches /<регэксп>/` | регэксп JavaScript (без флагов) находит совпадение в stdout |\n\nДля видов stdout код возврата не сравнивается. Ожидание другого вида или\nнеразбираемый регэксп — отказ `denied`, команда не запускается.\n\nВ плане проверки записываются у критерия приёмки задачи после `**Проверка:**` — одна\nв той же строке или несколько вложенным списком (`templates/plan-template.md`); при\nдекомпозиции каждая запись становится проверкой одного пункта DoD.\n\n### Ограничения исполнителя проверок\n\n| Правило | Значение |\n|---------|----------|\n| Исполняемые файлы | `node`, `npm` (только `test` и `run <скрипт>`), `git` (только `status`, `diff`, `log`, `show`, `ls-files`, `rev-parse`, `grep`), `pytest`, `python`, `dotnet`, `rg`, `grep` |\n| Опции | `npm` — после подкоманды только `--` и аргументы скрипту (собственные опции npm, например `--script-shell`, запрещены); `git` — подкоманда первым аргументом (глобальные `-c`, `-C` не проходят), `-O` / `--open-files-in-pager` запрещены; `rg` — `--pre` и `--hostname-bin` запрещены: они запускают другую программу |\n| Операторы оболочки | вне кавычек `;`, `&`, `&&`, `\\|`, `\\|\\|`, `<`, `>`, `` ` ``, `$(` — отказ; внутри двойных кавычек — только `` ` `` и `$(`; внутри одинарных всё буквально |\n| Запуск | без оболочки: команда разбирается в argv по правилам POSIX-оболочки без подстановок, обратная косая вне кавычек — обычный символ (пути Windows); `npm` на Windows запускается как `node …/npm-cli.js` рядом с `npm.cmd` |\n| Рабочий каталог | корень проекта |\n| Таймаут | 120 с на проверку; по истечении снимается всё дерево процессов, статус `timeout` |\n| Вывод | stdout и stderr — последние 4000 символов каждого, с пометкой об усечении; ожидание сверяется с полным выводом; в памяти — до 16 МБ каждого потока, stdout больше — ожидание вида stdout даёт `failed` с причиной `stdout_too_large` |\n\nНарушение — статус `denied`, процесс не запускается. Исполняемого файла нет в `PATH`\nпроцесса (на Windows ищутся `<имя>.exe` и `<имя>.com`) — `failed` с причиной\n`spawn_failed: ENOENT`: такая проверка красная всегда. Разрешённые программы\nустановлены не везде — текст в репозитории ищет\n`git grep -q --untracked \"<текст>\" -- <путь>` (без `--untracked` новый файл не виден,\nпока его не добавят в git). `checkStartProblem` называет отказ и отсутствующий\nисполняемый файл без запуска, `availableCheckTools` — установленные разрешённые\nпрограммы. Хуки Claude Code этих команд не\nвидят — их запускает скрипт пайплайна, поэтому защита только в исполнителе. `node`,\n`python` и `npm run` исполняют код репозитория; сетевой изоляции у запущенного\nпроцесса нет.\n\n### Проверки до работы\n\n- Валидатор плана (`validate-completeness.js` скила плана) отклоняет запись `check`,\n  которую исполнитель проверок отклонит или исполняемого файла которой нет на машине;\n  ошибка отсутствующего файла перечисляет установленные.\n- `verify-atomicity.js` при декомпозиции даёт FAIL тикету `dod_format: 2`, у которого\n  нет пунктов DoD, есть пункт без ровно одной полной формы или все пункты —\n  регрессионные проверки: такой тикет ничего не утверждает о результате работы.\n- `move-to-ready.js` перед переносом тикета `dod_format: 2` в `ready/` исполняет его\n  проверки `check` без пометки `regression` — до работы они обязаны быть красными.\n  Зелёная, отклонённая (`denied`), упавшая по таймауту или неразобранная проверка\n  отправляет тикет в `blocked/` с причиной в `blocked_reason`. Любая проверка `check`,\n  в том числе регрессионная, которую исполнитель отклонит, которой нет исполняемого\n  файла (`check_tool_missing`) или которую не разобрать, — тоже: она красная всегда.\n  Тикет `type: human` переносится без гейта.\n\n### Evidence и исходы предпроверки\n\nСтадия `verify-artifacts` по тикету `dod_format: 2` пишет файл\n`.workflow/state/evidence/<имя файла тикета>.json`, каждая попытка — заново:\n\n- `items` — пункты DoD: проверки `check` с командой, кодом возврата, выводом и\n  статусом (`passed`, `failed`, `timeout`, `denied`); `prose` и `visual` с\n  изображениями — `pending`; `visual` без файлов — `image_missing`; неразобранная\n  запись — `failed` с причиной `dod_record_invalid`;\n- `source_refs` — ссылки `file:line` из раздела Result, сверенные с диском: найденная —\n  строки исходника ±5 с номерами, иначе `status: missing`. Сам текст Result в\n  evidence не попадает;\n- `diff` — по «Изменённым файлам»: изменения относительно `HEAD` и новые файлы целиком,\n  без каталога тикетов; до 60 000 символов, сверх — начало и `diff_truncated`;\n  несобранная часть — причина в `diff_error`;\n- `legacy_gates` — прежние гейты; `review` — заполняет стадия ревью.\n\n| Исход | Когда | Куда |\n|-------|-------|------|\n| `all_green` | все пункты — зелёные `check`, прежние гейты пройдены | `move-ticket` в `done` без модели; в `## Ревью` — строка `passed` с путём evidence |\n| `passed` | проверки зелёные, есть пункты `prose` или `visual` | `review-result` с `evidence_file` и `required_capabilities` |\n| `legacy` | тикет без `dod_format: 2`, прежние гейты пройдены | `review-result-legacy` |\n| `failed` | провален прежний гейт (Result пуст, ни один пункт DoD не отмечен, файлы отсутствуют или не менялись, source-grounding, implementation assertions) или пункт DoD; у тикета `dod_format: 2` нет пунктов DoD | `increment-task-attempts`, без ревью; в `## Ревью` — строка `failed` с причинами (у тикета `dod_format: 2` — и с путём evidence) |\n\nИсход `default` ведёт в `review-result`, `error` — в `review-result-legacy`\n(`configs/pipeline.yaml`, стадия `verify-artifacts`).\n\n### Стадия ревью\n\n```yaml\n    review-result:\n      agents: [jev, claude-haiku-vision]\n      counter: task_attempts\n      model_io:\n        prepare: \".workflow/src/skills/review-result/scripts/prepare-review.js\"\n        apply: \".workflow/src/skills/review-result/scripts/apply-review.js\"\n        options: { pass_level: 4, min_confidence: 0.8 }\n```\n\nСтадия идёт по обмену `model_io` (раздел «Стадия с обменом model_io»), одинаково для\nлюбого агента списка:\n\n1. `prepare-review.js` читает `evidence_file` из контекста и строит вопросы — по\n   одному на пункт `prose` и `visual`: id `dod-<номер пункта>`, текст пункта (у\n   `visual` — с путями изображений), пять уровней шкалы\n   `src/skills/review-result/knowledge/dod-evidence-scale.md`. В `data` — пункты с\n   результатом, `source_refs` и дифф; раздела Result тикета там нет. Вопросов нет —\n   `status: passed` без модели. Отказы: `evidence_missing`, `evidence_invalid`,\n   `evidence_mismatch` (evidence другого тикета), `evidence_failed_items`,\n   `agent_without_multimodal` (есть изображения, а у агента нет `multimodal`).\n2. Модель отвечает уровнем на каждый вопрос: агент с командой — отдельным запуском\n   на вопрос, агент `kind: http` — одним запросом.\n3. `apply-review.js` засчитывает пункт при уровне не ниже `pass_level` и уверенности\n   не ниже `min_confidence` или без уверенности (агент её не сообщает). Неуверенная\n   оценка — провал, переоценки нет. Уровни, уверенность, агент и модель пишутся в\n   раздел `review` файла evidence и строкой в `## Ревью`; результат `passed` ведёт в\n   `move-ticket` `done`, `failed` и `error` — в `increment-task-attempts`, то есть в\n   `ready/` на повторное исполнение тикета, а когда счётчик `task_attempts` доходит\n   до `max: 6` (`max_reached`) — в `mark-blocked` и `blocked/`; `default` — в\n   `move-ticket` `backlog`. Следующее ревью по счётчику `task_attempts` берёт\n   следующего подходящего агента списка по кругу.\n\n**Выбор агента.** `verify-artifacts` отдаёт `required_capabilities` — то, что нужно,\nчтобы прочесть evidence: `[\"text\"]`, а при пункте `visual` — `[\"text\", \"multimodal\"]`.\nСпособности тикета сюда не входят: они описывают исполнителя, а ревьюер работает без\nинструментов, и способности вроде `mcp` у него не бывает (до 1.14.3 они входили, и\nтикет с `required_capabilities: [mcp]` не находил агента ревью). Есть скриншоты —\nостаются только агенты с `multimodal`; нет — все агенты списка. Первая попытка берёт\nпервого из оставшихся по приоритету, следующие — по кругу. В действующем конфиге\n(`jev` — `[text]`, `claude-haiku-vision` — `[text, multimodal]`) единственный агент с\n`multimodal` — `claude-haiku-vision`: скриншоты ревьюит он, а тикет без них на первой\nпопытке — `jev`.\n\n**Почему в списке только `kind: http` и `tool_less: true`.** Модель должна видеть\nтолько evidence. Агент с инструментами и доступом к репозиторию прочтёт тикет и его\nResult сам, и тогда оценка опирается на заявления исполнителя. Раннер вид агентов\nсписка не проверяет — это правило состава конфига.\n\n**Данные проектов — тексты пунктов DoD, вывод проверок, фрагменты исходников, дифф\nи скриншоты — уходят провайдеру модели выбранного агента: в действующем конфиге\nOpenRouter и TypeSafe (`jev`) или Anthropic (`claude-haiku-vision`)** (согласие\nстейкхолдера — 2026-09-26).\n\n### Claude без инструментов — claude-judge.js\n\n`src/scripts/claude-judge.js` — агент с командой: передаёт промпт судьи модели Claude\nбез инструментов вместе с изображениями, которые в нём названы, и печатает ответ в\nформате судьи:\n\n```yaml\n    claude-haiku-vision:\n      command: \"node\"\n      args: [\".workflow/src/scripts/claude-judge.js\", \"--model\", \"claude-haiku-4-5-20251001\"]\n      workdir: \".\"\n      prompt_stdin: true\n      tool_less: true\n      capabilities: [text, multimodal]\n```\n\n- Аргументы: `--model` (обязателен), `--command` (исполняемый файл claude, по\n  умолчанию `claude`), `--arg` (аргумент перед своими, можно повторять), `--timeout`\n  (секунды, по умолчанию 180). Промпт — из stdin или последним аргументом.\n- Изображения — пути из строк после `Изображения:` в `## Target Agent Output`; они\n  уходят модели блоками base64, а не путями. Только внутри рабочего каталога агента\n  (корень проекта), PNG, JPEG или WebP, до 5 МБ на файл и до 8 на запрос.\n- Каждый `@` текста заменяется на","readmeFilename":"README.md"}