{"_id":"@blackbelt-technology/pi-flows","_rev":"13-a0e16846c9e324c07b26f0a555177cf0","name":"@blackbelt-technology/pi-flows","dist-tags":{"latest":"0.5.0"},"versions":{"0.2.1":{"name":"@blackbelt-technology/pi-flows","version":"0.2.1","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.2.1","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"ecfa9b4cdccd78db22473bd734598dcb97ab7557","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.2.1.tgz","fileCount":63,"integrity":"sha512-wju+nn1uBnsZVO1fn2VltgSr/8nweIkn4QTdTAJGx8KHxD4EFX4DxnIQxdT9s8vziCOm6J5Q82RS8obTTRrHqg==","signatures":[{"sig":"MEUCIEW+4eB8gX1iTvLs8/swX1RO5yuT0uYWs9bdSs/LBFbWAiEAneWOQmKIUugyrPGlhC2NHPHACwK3FkXJX50veFdxl6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":522600},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts"},"gitHead":"0c3bb8e4a8203066aed1733586aeb299acd89ac9","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"11.11.0","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"25.8.1","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.2.1_1778943092650_0.806538037040724","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@blackbelt-technology/pi-flows","version":"0.2.2","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.2.2","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"14f3205b58d94cd817f67521818693c2430a981d","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.2.2.tgz","fileCount":63,"integrity":"sha512-gEioBydSmtwAslQzfz9EkKM4VhJb4D8s0fW3QStlgboA8eyphzlK7+Tn6IHEA1Q23urCzQdSX8qtjKNp9TxK9Q==","signatures":[{"sig":"MEUCIQDzImc4qFnS0W78yZkwfLAmuIX6xkFQzpXy2NSfFX/6CQIgXnnkOj7P5DIYyCNX2v0DgSJfw2eZT+uJ+xZqchKyhNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":520926},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts"},"gitHead":"b386c76de7ce004678a6c234a3fc02562c243017","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"11.16.0","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.16.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.2.2_1780647967202_0.5954303956770137","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@blackbelt-technology/pi-flows","version":"0.2.3","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.2.3","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"5d5d362089ae48c8f9c37d9036b11603b0b16c45","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.2.3.tgz","fileCount":63,"integrity":"sha512-2deMtIkSLMfJuGC3QcciCsKPibfqqBDr26mrD7J3+3/I/beNtU6PnMpHZnNkZ0dqPoxzj4iUrU8gxPlcpI19jQ==","signatures":[{"sig":"MEQCIA8pGMqs0RGq6DAG9++2RdY6vLPR93nhlzNYqJzT2bgoAiBXdXg/RIFaMi0jfUOkMOX3gOF6YX4qQO7NKHZPeJ082Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":521510},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts"},"gitHead":"baf1cfc4435b0ce0abc3eca13dae3cb38d5d2307","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"11.16.0","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.16.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.2.3_1780656631336_0.9706980216322119","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@blackbelt-technology/pi-flows","version":"0.2.4","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.2.4","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"bc611d61665e6339a8842531e2b81016951130be","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.2.4.tgz","fileCount":64,"integrity":"sha512-7E2jc4dqhTy7YQ0jSDGWRNWSQ6GMgxh9fSPqFBQ04uGfh/n4QWd5qHq6v7tMyHoyo8hi/SkMVkiCLRh4/z7ilw==","signatures":[{"sig":"MEYCIQC3RAu4Ft86NQ2cneAKZIU+Ywd4VuOLYwG8SacQ0VI7ygIhANbVAiSI/L848JLhRfihxU+tmCXzxxiEh5HlQPCDXJck","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":540338},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts"},"gitHead":"a722121eafa796f413f1065a76bb3d3dffa3ce77","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"11.17.0","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.16.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.2.4_1782234357265_0.39892889023964484","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@blackbelt-technology/pi-flows","version":"0.3.0","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.3.0","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"108a9aa1002878398e427a9edd5dde75c3293118","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.3.0.tgz","fileCount":66,"integrity":"sha512-C1fk2mp4j1luRHlt5qftMkCj7qeogYZF0mAdMwDifbbow0O2qW1H8xJ/3LVnz5QKfs42TvY3Vjig3Tzg7Ayn7g==","signatures":[{"sig":"MEUCICicVkkJ6H0LynNc8PdEjQOwAWZYjTBkUnrWHl118kSLAiEAuUE4N92pkLh8S5JaNUIA1dXZ1sLO0b2Gn05a2cMoSLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":529142},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts"},"gitHead":"901d93baea93ddff330e4fbf504b54381871fd72","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"11.17.0","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.17.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.3.0_1782725596613_0.49921821058220184","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@blackbelt-technology/pi-flows","version":"0.3.1","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.3.1","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"d1dda707f589ad63d4dbcb05c6b8f80ca422a54b","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.3.1.tgz","fileCount":67,"integrity":"sha512-Llw0zZVh15ByGFeozqHV+T+QWZEaajemsEhfSbfiAwIaf4CzgZrQzmjgsNRhyyGM6pIF+Gm/iWs2VmkMyCV7ew==","signatures":[{"sig":"MEUCIQDRRCNbcc7wRufrLzo4yDQREm9psgVCZn3TiV1+i6/gxwIgFrAzxW9yGPiLoufGAXpqnzvY2XYv5keQt/HDUTtJFqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":547749},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"4a1280e600de3e7443a84af1918fc3010d275742","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"11.17.0","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.17.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.3.1_1782739410340_0.7285375219117505","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@blackbelt-technology/pi-flows","version":"0.3.2","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.3.2","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"134133acfd81f4508d861d2c2c5c152fe0292b55","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.3.2.tgz","fileCount":67,"integrity":"sha512-uMkWSS8o5llsFbyQnAX8mjq+gj4IJK4sKuYb7qY0/6w6tq/bD7pXx0PT5E4sDgdDUH/c9CGj9pN1eR+65edcgA==","signatures":[{"sig":"MEQCICm12gO2v0Hbz/+rZi0cWRR3UeX7m12+n5jM+OGdssb4AiA/710sk8lMJJ0Ik4QPaqNESXBZy2uffYqlqp8MwNDKRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":552188},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"812f758b8f1915f6fe9148762a353f6f7f320380","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"11.18.0","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.17.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.3.2_1782913578670_0.4081527846143582","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@blackbelt-technology/pi-flows","version":"0.3.3","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.3.3","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"5d49a87dc8d3e507f0b72c8b8133d4f6580bdd7f","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.3.3.tgz","fileCount":67,"integrity":"sha512-P/V6344TJ3ofRTBHk8ZmuUeWY/ExniXU1HFKh3ARKTDfkkoGX9Bpd4TUkKhZKe8migeTPOwUrKvXXlZx9Y0epw==","signatures":[{"sig":"MEUCIAMS9KMKSusuLglrg7T5rkCTaEOhtRR8p5TF/kU0SFliAiEAjNTYWfwQGWqvBYXfA8s/9as59WGI77grixNidmgsqt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":553374},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"0c1255457412eaaf22a39930f38b09339ca1d388","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"12.0.1","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.3.3_1783952393548_0.7711868464626797","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@blackbelt-technology/pi-flows","version":"0.3.4","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.3.4","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"0bb74c64eb2ae8c90115af714af4995d3ad8df3f","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.3.4.tgz","fileCount":68,"integrity":"sha512-1F7IZ9EugOAzhfYhtVDksy90/JtWuak4kRSOEZA44WF1nr6S+BRYjcdZNSMteT4xjtOOwz6szGNObRCpGrvphA==","signatures":[{"sig":"MEUCIGacPTNefNIAUdD/0+MuJ//UzFy+kk7m1WIzwB7K3qYHAiEApx/dYlqjoeTCUuLtOeqXfMX7QM4GNAz1oB1lqmerpQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":557303},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"c663a1b18929dc36f803ee195847f3e0a64c6786","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"12.0.1","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.3.4_1784124891538_0.43690125243586797","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@blackbelt-technology/pi-flows","version":"0.3.5","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.3.5","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"b43bc4278451fe5f96b234219fa2f9df61272744","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.3.5.tgz","fileCount":68,"integrity":"sha512-mpxbQbPP6waw+4M3XEaLD8Q26Ufu8MG6S9qQiRC86oZSAQjE590c+3drbSo5EUk0mSp8/j+5+Kt/fnnf7zn3MQ==","signatures":[{"sig":"MEQCIDaG5DhXmA7j30SsYSn+mnkLngXF3y4L73rtdfxbi6X/AiBFY6r5s5Jw0OnMCuJzXa5J3ofMOFg8I6XvRSYCanaMJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":565581},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"0f6ff8debb59f833df6669c2f5b5dfb2f518c3c5","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"12.0.2","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.3.5_1786114366202_0.8396265173195416","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@blackbelt-technology/pi-flows","version":"0.3.6","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.3.6","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"41a73d22f1a71a4c3c322c1c5126ed828c7b3386","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.3.6.tgz","fileCount":68,"integrity":"sha512-NVxQ/FHo2oBm6OhcjuG7q2oZkFunGG2m8xfn+3Fl4D0rWD9BgVVyO5EW6WXUExWhZziY29TMOM27m/p4cOB/UQ==","signatures":[{"sig":"MEUCIQCUEttQi76RueYolSeOS6rd5GdZyo6BNHm5JaPOZB+vyAIgWB20mX2Kn56la9J2lK2p0tSWyZNGCVgKMjUFJUZalrw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":569792},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"878058a8f4005bedde7d67bb0396e7f4b0c3e3f9","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"12.0.2","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.80.0","@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.3.6_1786633555651_0.2031673360074453","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@blackbelt-technology/pi-flows","version":"0.4.0","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-flows@0.4.0","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"42e58c80c6d72e364938330baaa2bcbe910bcc1d","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.4.0.tgz","fileCount":68,"integrity":"sha512-J/qYh/e4j10fHj/cQCX5xOnqUK3IXXBiAhoffyg/ysEAZ4xB5ck6fXQA6cHDLFQNp0wOeEanPjwwq/HyJlNqcg==","signatures":[{"sig":"MEUCIQCus5j4Y9IEYfnqKosvV34WGEMMcu74BQ5NqGeS4R/kTwIgBNunX3ZwSXAHvSL1SmAMgJiYCmaGwMPoidgkuaVyWAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":574393},"main":"./extensions/index.ts","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"79c1f019cd3043ab422deadc65a70cc89ee3d327","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"12.0.2","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.84.1","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":"^0.84.1","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"_npmOperationalInternal":{"tmp":"tmp/pi-flows_0.4.0_1786703370411_0.10469117388867089","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"pi":{"extensions":["./extensions"]},"_id":"@blackbelt-technology/pi-flows@0.5.0","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"dist":{"shasum":"2644a0597f81dbe0a54b17331d73da3b547e085a","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-flows/-/pi-flows-0.5.0.tgz","fileCount":68,"integrity":"sha512-6PuUsSJ962MrnTvi0/2QdKdXorZFQ9WTvWLU8wshzREhLDt2nJBtgkmn2U3Ecbfe5BafqjUzG5OLIdcHkgk2Ig==","signatures":[{"sig":"MEQCID6ebHtL1srDTq8HE/FfdDHZ0rBxSMDQQqfjf0bHfPHBAiA1E3GmZcrrVFUV3P2XMkxyG5u9nwB64L2YZ93IIuAt6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBefcroh6kUEu+AEK98vT7aI+4SXMH4KtQFFUhr3nFBsAiEAnywz4Pirsa+AzwiG4kIV+cR0g/AF+jt76tyyG1YSGTk="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-flows@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":575314},"main":"./extensions/index.ts","name":"@blackbelt-technology/pi-flows","type":"module","exports":{".":"./extensions/index.ts","./testing":"./extensions/flow-engine/testing.ts"},"gitHead":"dcea657b0783d356be14d2c51757d9962e1c3919","license":"MIT","scripts":{"lint":"eslint extensions __tests__","test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"version":"0.5.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:525f4027-ced6-4242-b3a9-90632a1fe053"}},"homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","keywords":["pi-package"],"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"_npmVersion":"12.0.2","description":"Flow engine, dashboard, and orchestration extensions for pi","directories":{},"maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.0","vitest":"^4.0.0","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.8.0","@sinclair/typebox":"^0.34.49","typescript-eslint":"^8.59.3","@earendil-works/pi-ai":"^0.86.1","@earendil-works/pi-tui":"^0.86.1","@earendil-works/pi-coding-agent":"^0.86.1"},"peerDependencies":{"@sinclair/typebox":"^0.34.49","@earendil-works/pi-ai":">=0.84.1 <1.0.0","@earendil-works/pi-tui":">=0.84.1 <1.0.0","@earendil-works/pi-coding-agent":">=0.84.1 <1.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-flows_0.5.0_1789988759438_0.896752211407263"}}},"time":{"created":"2026-05-16T14:51:32.517Z","modified":"2026-09-21T11:05:59.918Z","0.2.1":"2026-05-16T14:51:32.839Z","0.2.2":"2026-06-05T08:26:07.336Z","0.2.3":"2026-06-05T10:50:31.538Z","0.2.4":"2026-06-23T17:05:57.464Z","0.3.0":"2026-06-29T09:33:16.748Z","0.3.1":"2026-06-29T13:23:30.519Z","0.3.2":"2026-07-01T13:46:18.845Z","0.3.3":"2026-07-13T14:19:53.774Z","0.3.4":"2026-07-15T14:14:51.692Z","0.3.5":"2026-08-07T14:52:46.382Z","0.3.6":"2026-08-13T15:05:55.857Z","0.4.0":"2026-08-14T10:29:30.556Z","0.5.0":"2026-09-21T11:05:59.550Z"},"bugs":{"url":"https://github.com/BlackBeltTechnology/pi-flows/issues"},"license":"MIT","homepage":"https://github.com/BlackBeltTechnology/pi-flows#readme","keywords":["pi-package"],"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-flows.git","type":"git"},"description":"Flow engine, dashboard, and orchestration extensions for pi","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"readme":"# pi-flows\n\n[![CI](https://github.com/BlackBeltTechnology/pi-flows/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/BlackBeltTechnology/pi-flows/actions/workflows/ci.yml)\n\nA pi-package that adds multi-agent workflow orchestration to pi. Design flows as YAML DAGs, run them with automatic parallel scheduling, and watch everything in a live TUI dashboard — while the main session stays fully interactive.\n\n---\n\n## Overview\n\nFlows are **reusable workflow templates** that coordinate multiple AI agents through structured inputs and outputs. Each agent runs in an isolated session with scoped tools and filesystem access.\n\n**Best practice usage:**\n- **Research → Plan → Implement → Verify** cycles\n- **Code review** pipelines with verify/fix loops\n- **Documentation generation** with multi-domain research\n- **Refactoring** with interactive branching\n\n## Installation\n\n```bash\npi install npm:pi-flows\n```\n\nOr from a local clone:\n\n```bash\npi install /path/to/pi-flows\n```\n\n## Quick Start\n\n1. **Create an agent** (`.pi/flows/agents/reviewer.md`):\n\n   ```markdown\n   ---\n   name: reviewer\n   description: Reviews code for quality issues\n   model: @coding\n   tools: read, grep, find\n   inputs:\n     - target_path\n   ---\n   Review the code for: ${{task}}\n   Focus on: ${{input.target_path}}\n   ```\n\n2. **Create a flow** (`.pi/flows/flows/review/flow.yaml`):\n\n   ```yaml\n   name: review\n   description: Research then review code\n   task_required: true\n   task_prompt: \"What should I review?\"\n\n   steps:\n     - id: research\n       agent: project-context-reader\n       task: Investigate the codebase for ${{task}}\n\n     - id: review\n       agent: reviewer\n       blockedBy: [research]\n       inputs:\n         target_path: \"${{result.research.summary}}\"\n       task: Review based on research findings\n   ```\n\n3. **Run it:**\n\n   ```\n   /review Fix the auth middleware\n   ```\n\n## Commands & Keybindings\n\n| Command | Description |\n|---------|-------------|\n| `/flows` | List and manage flows (run, delete) |\n| `/skill:manage-flows` | Load the flow/agent create-and-edit reference skill |\n| `/flows:delete` | Delete a flow |\n| `/roles` | Assign models to role tiers (@coding, @planning, etc.) |\n| `alt+a` | Toggle auto-routing (agents decide fork branches autonomously) |\n| `alt+x` | Abort running flow / dismiss flow summary |\n| `alt+o` | Inspect agents (enter dashboard/summary navigate mode) |\n| `alt+t` | Toggle thinking in the agent-detail overlay |\n\nKeybindings live in the `alt+<letter>` namespace to avoid colliding with pi's `ctrl+<letter>` defaults, and are rebindable via `~/.pi/agent/keybindings.json`.\n\nFlows also register as slash commands based on directory path: `.pi/flows/flows/review/flow.yaml` → `/review`. Each flow is a self-contained directory — its `flow.yaml` plus any co-located code-node handlers (`<id>.ts`).\n\n## Core Concepts\n\n- **Agents** — Markdown files with YAML frontmatter (config) and body (system prompt). Run in isolated sessions with scoped tools and file access.\n- **Flows** — YAML files defining a DAG of steps connected via `blockedBy`. The engine schedules independent steps in parallel, up to `max_concurrent`.\n- **Template variables** — `${{task}}`, `${{result.step-id.summary}}`, `${{input.name}}` wire data between steps at dispatch time.\n- **Model roles** — `@coding`, `@planning`, `@research`, `@compact` map to concrete models via `/roles`. Each agent declares which tier it needs.\n- **Edit flow** — Create and edit flows/agents conversationally in the main session using the `flow_agents` and `flow_write` tools. These tools are off by default; enable them per project or globally with `flows.editFlow: true` in `.pi/settings.json`. Load `/skill:manage-flows` for the format reference.\n\n## Writing Agents\n\nAgents are `.md` files in `.pi/flows/agents/` (project-local) or a package's `agents/` directory.\n\n```markdown\n---\nname: backend-dev\ndescription: Implements backend changes\nmodel: @coding\nthinking: high\ntools: read, write, edit, grep, bash\ninputs:\n  - research_context\noutputs:\n  - verdict\naccess:\n  read: [\"src/**\"]\n  write: [\"src/main/**\"]\n  bash:\n    deny: [\"rm -rf\"]\ncard:\n  label: \"Backend Dev\"\n  metric: developer\n---\nYou are a backend developer. Task: ${{task}}\nContext: ${{input.research_context}}\n```\n\n**Key fields:** `model` (role tier), `tools` (allowlist — guard blocks everything else), `inputs`/`outputs` (typed data flow), `access` (filesystem sandbox), `card` (TUI dashboard rendering).\n\n## Writing Flows\n\n### Step Types\n\nEvery step declares an explicit `type:` (the parser does not infer it). There are five: `agent`, `fork`, `agent-decision`, `code`, `code-decision`.\n\n**Agent** — dispatch a named agent with a task:\n```yaml\n- id: impl\n  type: agent\n  agent: backend-dev\n  blockedBy: [research]\n  inputs:\n    research_context: \"${{result.research.summary}}\"\n```\n\n**Fork** — present a choice to the user (or let an agent decide in auto-routing mode):\n```yaml\n- id: choose\n  type: fork\n  question: \"Which approach?\"\n  options: [Quick fix, Full refactor]\n  branches:\n    Quick fix: quick-step\n    Full refactor: refactor-step\n  agent: flow-decision    # used when alt+a (AUTO) is active\n```\n\n**Agent Decision** — an agent calls `finish({ branch })` to route; a branch pointing at an earlier step is a loop (bounded by `max_iterations`):\n```yaml\n- id: verify-loop\n  type: agent-decision\n  agent: flow-decision\n  task: \"Check iteration ${{loop.verify-loop.iteration}}/${{loop.verify-loop.max}}\"\n  branches:\n    fix: fixer        # backward target → loops\n    done: done        # forward target → exits\n  max_iterations: 3   # required when a branch points backward\n```\n\n**Code** — run a deterministic TypeScript handler as a node (no LLM):\n```yaml\n- id: validate\n  type: code\n  inputs:\n    invoice: \"${{result.extract.canonical}}\"\n  outputs:\n    - name: valid\n  blockedBy: [extract]\n```\n\n**Code Decision** — a `code` node that routes on a returned `branch` (≥2 branches):\n```yaml\n- id: route\n  type: code-decision\n  inputs:\n    valid: \"${{result.validate.valid}}\"\n  branches:\n    approve: finalize\n    reject: notify\n```\n\n## Input Wiring\n\nSteps pass data through `inputs` + template variables:\n\n```yaml\n- id: researcher\n  agent: researcher\n  task: Investigate ${{task}}\n\n- id: developer\n  agent: developer\n  blockedBy: [researcher]\n  inputs:\n    context: \"${{result.researcher.summary}}\"\n    spec_path: specs/api-spec.md    # pass a path; the agent reads it via its `read` tool\n```\n\nThe agent's prompt references inputs as `${{input.context}}`. Typed outputs declared in agent frontmatter (`outputs:`) are accessible as `${{result.step-id.outputName}}` and are delivered to code-node handlers as their real JSON type when wired as a whole-value reference. File-backed data is passed as a path and read at runtime (give the consuming agent the `read` tool) — there is no `file://` content injection.\n\n## TUI Dashboard\n\nWhen flows run, a live dashboard appears with agent cards in a grid layout. Each card shows status, elapsed time, and domain-specific metrics (files modified, tests passed, etc.). Navigate with arrow keys, expand agent detail views, and see the full flow summary after completion.\n\nCard types (`card.metric`): `developer`, `researcher`, `tester`, `verifier`, `writer`, `default` — or register custom renderers via `flow:register-card`.\n\n## Integration with pi-agent-dashboard\n\npi-flows is the **engine**. The browser dashboard rendering of flow events lives in [`pi-agent-dashboard`](https://github.com/BlackBeltTechnology/pi-agent-dashboard) as a separate workspace plugin (`packages/flows-plugin/`). The two repos are intentionally split: pi-flows emits `flow:*` events; the dashboard reacts to them.\n\nSee [`docs/dashboard-integration.md`](docs/dashboard-integration.md) for the architecture diagram, the wire-protocol bridge, and how to add new flow events end-to-end.\n\n## Built-in Agents\n\n| Agent | Role | Description |\n|-------|------|-------------|\n| `flow-decision` | Router | Makes branch/loop decisions for fork and loop steps |\n| `project-context-reader` | Researcher | Reads and summarizes project structure |\n\n## Developer Docs\n\nDetailed documentation in the `docs/` folder:\n\n- [Flows Reference](docs/flows.md) — Complete step type reference with syntax and examples\n- [Agents Reference](docs/agents.md) — Agent frontmatter schema, model tiers, card types\n- [Flow Authoring](docs/flow-authoring.md) — Full format reference for agent and flow files\n- [Architecture](docs/architecture.md) — Internal design: DAG execution, agent isolation, sub-extensions\n- [Events API](docs/events-api.md) — Register custom cards, tools, and listen to flow events\n- [Public API](docs/public-api.md) — Core TypeScript types and functions for programmatic use\n- [Skills & Extensions](docs/skills-and-extensions.md) — Skill bundles and extension registration\n- [Tools Reference](docs/tools-reference.md) — Built-in tools available to agents\n- [Creating Packages](docs/creating-packages.md) — Build domain packages with custom agents and flows\n- [Extending pi-flows](docs/extending-pi-flows.md) — Advanced customization\n- [Dashboard Integration](docs/dashboard-integration.md) — How pi-flows and pi-agent-dashboard connect\n\n## Releasing\n\nReleases are automated via `.github/workflows/publish.yml`. Two paths:\n\n**Workflow dispatch (recommended).** Open the GitHub Actions UI, run the `Release` workflow, type the version (e.g. `0.2.2`). The workflow bumps `package.json`, dates the matching `## [Unreleased]` (or undated `## [X.Y.Z]`) section in `CHANGELOG.md` to `## [vX.Y.Z] - <today>`, commits, tags, pushes, then publishes to npm with [provenance](https://docs.npmjs.com/generating-provenance-statements) via npm Trusted Publishing, and drafts a GitHub Release with the CHANGELOG body.\n\n**Tag push.** Locally bump the version + CHANGELOG yourself, commit, tag `vX.Y.Z`, and `git push --follow-tags`. The same publish + release jobs fire.\n\nBefore the first release run, ensure:\n\n1. The npm package `@blackbelt-technology/pi-flows` has a [Trusted Publisher](https://docs.npmjs.com/trusted-publishers) configured pointing at this repo + `publish.yml` + the `npm-publish` environment.\n2. A GitHub repository environment named `npm-publish` exists (Settings → Environments). Add a required-reviewer rule there if you want a manual gate before every publish.\n\nPrep your CHANGELOG entry under `## [Unreleased]` before triggering the workflow — the heading-dating step rewrites it in place.\n\nSee `docs/releasing.md` for the operator runbook.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}