{"_id":"@catalogicus-international/n8n-nodes-flow-state","_rev":"10-4483499a462f3d870ab2b75a07387236","name":"@catalogicus-international/n8n-nodes-flow-state","dist-tags":{"latest":"0.2.5"},"versions":{"0.1.0":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.1.0","keywords":["n8n-community-node-package","workflow","state","session","json-schema"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.1.0","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"n8nNodesApiVersion":1},"dist":{"shasum":"71f395e2ad5622619f257a88ad860fdf627afab7","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.1.0.tgz","fileCount":36,"integrity":"sha512-opo1QQjhy8suRl+U2NdjRVhaR9n7r3zrRl5MV9rX7rMEGLTFUZzIV/p8og2f/QPaQ5T1fTEpBXg51oQyXSGVXA==","signatures":[{"sig":"MEYCIQD0zpjPM9Na9dA0dHco1lBDzB3BW5AdXMVAhzOeE0ZiQQIhAKAlm0JJVFNnLnVm5RWv2tJoyFpj/GGNlHIjGaMyJkha","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126369},"gitHead":"8d3d960f33bd0c4fe37d92cda8ecf95ff5d48b3f","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Process-local, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.1.0_1784050609815_0.04213175328543617","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.1.1","keywords":["n8n-community-node-package","workflow","state","session","json-schema"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.1.1","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"n8nNodesApiVersion":1},"dist":{"shasum":"cfac53971359ea56036175c89c83d56ef17dcf04","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.1.1.tgz","fileCount":36,"integrity":"sha512-vtJEOoBIgsC3WY8O2KzrzOLficjMgeuIYQ/Dw4bnjtQuVjNZ42e1wLXnsaVwxepqsQ7whzHjwSUO7BjTtKIB0w==","signatures":[{"sig":"MEQCID7Mavp8DD8bQ11XzPGg/wOfBgipvmGoDQKhpgSje9KwAiBj9BHMT8SfS42XMTjc8g8k3tNljSyd4BhkVHLZbSPNXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126430},"gitHead":"0bf81afe405487ab6808521776421b17cf1ccd77","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Process-local, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.1.1_1784185071085_0.2980747433319113","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.1.2","keywords":["n8n-community-node-package","workflow","state","session","json-schema"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.1.2","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"n8nNodesApiVersion":1},"dist":{"shasum":"5cf41b1bac3d1329f08438d4b203e11c60cfbfc4","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.1.2.tgz","fileCount":36,"integrity":"sha512-gGgBlFgJBSnBls+uDNhWf0uwHxUqJWfrHo45CCyoUrEWyHiGm9zWRMqd0bsTMu6FMHlY/Wxzs2X6zXWaSI/xXQ==","signatures":[{"sig":"MEUCICFUTFM3dODqJDSJEHCpSea6nx1tzxWQB9lI9GGWDiU1AiEAziEd2jepnmJohEuuCuTAsgjBLCQRuwNLU/dh4d5oqo8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126430},"gitHead":"9dda0823eed46dd7901306485e9ea4564484551d","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Process-local, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.1.2_1784195051331_0.034556863990361064","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.1.3","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.1.3","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"credentials":["dist/credentials/FlowStateRedisApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"c7f24a3a62fcea17e35454fd79ee5d1d714ad9b2","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.1.3.tgz","fileCount":45,"integrity":"sha512-rq/vkXwyqHtpuRFBAxH5ha1FemyWvdfbxolNfDFwDsR1ZBoIJxURvEyBCnauW0Zae/YP2Vf88kDUSkeoX5SxTg==","signatures":[{"sig":"MEYCIQDFXS8fqA7vgV58FixnOOBwaZbJ5kMzEiHSJS/6qo2/qAIhALiVqwkucJewtz1uKmSt8YRiBHsVVL1WrrzqcNxhYftt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164256},"gitHead":"bf1ce5ac57466257ce0052a01bd606cf6f9f956e","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Redis-backed, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","ioredis":"^5","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","ioredis-mock":"^8","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.1.3_1784203057084_0.532869088713628","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.2.0","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.2.0","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"credentials":["dist/credentials/FlowStateRedisApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"85437595c3d583ef5cb9c79ea55440a67084d5fd","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.2.0.tgz","fileCount":45,"integrity":"sha512-DmUdnLAckonBrEzhN0Xn7c5goKJR5HfRxXrBk4Ql4fuaecmUT08ovbYgs/NPvTKsaYtS6W0pD6SZVCRg96SCfQ==","signatures":[{"sig":"MEUCIQCsAGqYvJ0OxsXIqQ8dM1+rVMb1/vMp5zR5sFqiBxP6WQIgP0bz5Fhv0vflsQkP3l0rNU3iQifZUDlTODXxOzFdYzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167889},"gitHead":"a52c6d7f329f6becbb38a01e578b0342324e206b","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Redis-backed, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","ioredis":"^5","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","ioredis-mock":"^8","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.2.0_1784214685074_0.4620965778092896","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.2.1","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.2.1","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"credentials":["dist/credentials/FlowStateRedisApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"675eb0140d3fc22c98a09780990613beee46b2e9","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.2.1.tgz","fileCount":45,"integrity":"sha512-ITAMqMO/PbmnsYe8y9ri5Nlzc7YwLiJjkvasJNjRbXsXUkYA1S5Q81SYfqi2Wy3T9b3qOwUFVuQnAtJrjYkXYw==","signatures":[{"sig":"MEYCIQCtR3TQV/8Q/qNmroEvJ3sT+JKkgTDHCzNF0sZN3M/jxgIhAOy69QBqsOLTA48kKGnMEHAZktL7NBHg23TygfH/nz8H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168076},"gitHead":"396d282437b35a02386fd2b973f9489240fe717c","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Redis-backed, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","ioredis":"^5","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","ioredis-mock":"^8","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.2.1_1784215185910_0.4004681022398531","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.2.2","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.2.2","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"credentials":["dist/credentials/FlowStateRedisApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"7820a662e9eae1d0705794150eb0dfd53d118821","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.2.2.tgz","fileCount":45,"integrity":"sha512-U0oOpBKC5f2HELs/krWb0PI1WliTAOJ3GCizRCupzDB8SNMmV/9PNn8BHF7uyMbiSJsT4MA3w6OVH4rNpKop7Q==","signatures":[{"sig":"MEUCIGJ5ExyWP3dZ8P/WqX0RTER2z/XOUFMUMNa6/0GXctXRAiEAsEaZV67pxN6HO6q18ktPFE8nFlmiiAAmlOAjVwE3hMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168230},"gitHead":"43e4945f96d7bb95831d35fdb3582e010b1c811b","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Redis-backed, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","ioredis":"^5","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","ioredis-mock":"^8","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.2.2_1784215439354_0.7217336069385691","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.2.3","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.2.3","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"credentials":["dist/credentials/FlowStateRedisApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"e0990c5e50b785fd528677cf30a109ad0c78fb33","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.2.3.tgz","fileCount":45,"integrity":"sha512-gZmRBz2NWb/Kr+wI2dPAlDVdrDvYRjKv6E4lVfY5YvRN/+V8rNMz9bx7Mg762W5hqNRpKYNubBvoqkQ5Qtj0ZQ==","signatures":[{"sig":"MEUCIQD+tRKh8IZ6LyvxcZagSqyfVE5tT64jzElyYKkUJ6tEoQIgNxmZZBt2g7WNejlc7rCj8lkO0+Cx9wjzT5222rx18eI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169112},"gitHead":"df567d7a6cef48b49ab4d7ad521d059e5f9dfbd5","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Redis-backed, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","ioredis":"^5","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","ioredis-mock":"^8","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.2.3_1784215771268_0.4409631112950909","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.2.4","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","_id":"@catalogicus-international/n8n-nodes-flow-state@0.2.4","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"n8n":{"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"],"strict":false,"credentials":["dist/credentials/FlowStateRedisApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"9fcc6a5ed41fc3fcb7b365de912bd7089758c199","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.2.4.tgz","fileCount":45,"integrity":"sha512-P/FEyxFpjgnmv7vbf4YF3hmvRS1R2ApCE8OFK8gpuU+ts1AgMqUe8NMt2ZEOV3Ag3VmgHDIOO8zeU4FnOMtEIQ==","signatures":[{"sig":"MEQCIA5ylPkRQZ9SlbxDvNEzYUbbArv4nlhOXkE2S1fKUE+mAiBuq2sdFlsIobCJFt1xgJQCuB5p16j8T3F7fS3/P6ly2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169799},"gitHead":"331b241b6940b826d9a818e62f29d4d146ec85d9","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"pnpm run build && node --test test/**/*.test.js","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"pnpm run lint && pnpm test"},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"repository":{"url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git","type":"git"},"_npmVersion":"11.6.1","description":"Redis-backed, schema-validated flow sessions and state change events for n8n","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.20.0","ioredis":"^5","generate-schema":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"eslint":"9.29.0","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3","ioredis-mock":"^8","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-flow-state_0.2.4_1784223514014_0.31314950846180944","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@catalogicus-international/n8n-nodes-flow-state","version":"0.2.5","description":"Redis-backed, schema-validated flow sessions and state change events for n8n","license":"MIT","packageManager":"pnpm@9.15.0","homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"repository":{"type":"git","url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git"},"scripts":{"build":"n8n-node build","build:watch":"tsc --watch","dev":"n8n-node dev","lint":"n8n-node lint","lint:fix":"n8n-node lint --fix","test":"pnpm run build && node --test test/**/*.test.js","release":"n8n-node release","prepublishOnly":"pnpm run lint && pnpm test"},"publishConfig":{"access":"public"},"n8n":{"n8nNodesApiVersion":1,"strict":false,"credentials":["dist/credentials/FlowStateRedisApi.credentials.js"],"nodes":["dist/nodes/FlowState/FlowState.node.js","dist/nodes/FlowStateTrigger/FlowStateTrigger.node.js"]},"dependencies":{"ajv":"^8.20.0","generate-schema":"2.6.0","ioredis":"^5"},"devDependencies":{"@n8n/node-cli":"*","eslint":"9.29.0","ioredis-mock":"^8","prettier":"3.8.3","release-it":"20.2.0","typescript":"5.9.3"},"peerDependencies":{"n8n-workflow":"*"},"gitHead":"1c995c6204646e0c0b09cbfb3448fb675bc09c3d","_id":"@catalogicus-international/n8n-nodes-flow-state@0.2.5","bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-GEWVHzRIxeXmhk+yUFyNiODy1blr8t1/OFkPTygDHrR4eSQbFJVg8omDaJOnJA9lwTQINRdGSEJrGaBKb2jQxg==","shasum":"c45ff324ae57e4a36ca3031c20e74de41abcfcab","tarball":"https://registry.npmjs.org/@catalogicus-international/n8n-nodes-flow-state/-/n8n-nodes-flow-state-0.2.5.tgz","fileCount":45,"unpackedSize":171785,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD57uc9cfi/aiwYvt5O2VhpnRz6pMBl6b4OzLCywqZAbAIgGnqXScZoe0Y3z54Kx39peKATm7/vKo5J+OpFB/oF3zQ="}]},"_npmUser":{"name":"vabelous","email":"mailforbva@gmail.com"},"directories":{},"maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-flow-state_0.2.5_1785319469386_0.1990095571937427"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-14T17:36:49.664Z","modified":"2026-07-29T10:04:29.653Z","0.1.0":"2026-07-14T17:36:50.027Z","0.1.1":"2026-07-16T06:57:51.210Z","0.1.2":"2026-07-16T09:44:11.468Z","0.1.3":"2026-07-16T11:57:37.226Z","0.2.0":"2026-07-16T15:11:25.220Z","0.2.1":"2026-07-16T15:19:46.103Z","0.2.2":"2026-07-16T15:23:59.496Z","0.2.3":"2026-07-16T15:29:31.412Z","0.2.4":"2026-07-16T17:38:34.156Z","0.2.5":"2026-07-29T10:04:29.517Z"},"bugs":{"url":"https://github.com/catalogicus-international/n8n-nodes-flow-state/issues"},"author":{"name":"Catalogicus International","email":"noreply@catalogicus-international.invalid"},"license":"MIT","homepage":"https://github.com/catalogicus-international/n8n-nodes-flow-state#readme","keywords":["n8n-community-node-package","workflow","state","session","json-schema","redis"],"repository":{"type":"git","url":"git+https://github.com/catalogicus-international/n8n-nodes-flow-state.git"},"description":"Redis-backed, schema-validated flow sessions and state change events for n8n","maintainers":[{"name":"vabelous","email":"mailforbva@gmail.com"}],"readme":"# n8n-nodes-flow-state\n\nRedis-backed, schema-validated flow sessions for n8n. The package provides the action node **Flow State** and the event node **Flow State Trigger**.\n\n## Requirements\n\nBoth nodes require **Flow State Redis API** credentials (host, port, optional database/user/password/SSL, and a key prefix). All state and events live in Redis, so sessions survive process restarts and are shared across n8n instances, including queue-mode workers, that point at the same Redis.\n\n## Runtime guarantees and limits\n\nSession state and the id index are stored in Redis. A successful mutation atomically checks the current optimistic version, writes the new record, and publishes an event — all in one Lua call — then returns a new `stateRef` containing `sessionId`, `sessionKey`, and `version`. Two mutations using the same version cannot both succeed; the loser receives `version_conflict`.\n\nSessions have a TTL and terminal retention window. A sweeper emits `session.expired` when an active session's TTL elapses; a small grace is added to the native Redis key TTL so the sweeper observes and emits expiry before the key is garbage-collected. Events are delivered via Redis Pub/Sub and carry a full session/step snapshot, so a Flow State Trigger in a different process receives them with the requested Output Detail. Pub/Sub has no durable log or replay: do not use events as the only mechanism for critical domain writes; invoke those directly after a successful Transition or Complete.\n\nCompiled JSON-schema validators are cached per process (rebuilt from the session's stored model) and are never persisted or transmitted.\n\n## Models and step data\n\nEach created session stores an independent model snapshot; later edits to node parameters do not change existing sessions. Fields mode is convenient for separately configured nodes such as `Start Customer Order` and `Start Shipment`. JSON mode can also receive a canonical model from an expression. There is no central model registry, and the package contains no Telegram-specific or domain model.\n\nCreate Session accepts a model in two input modes. **Fields** is the default UI builder and remains compatible with existing workflows. **JSON** accepts one canonical `FlowModel` object containing `flowId`, `modelVersion`, `initialStep`, and `steps`.\n\nWithin either model input mode, every step uses one of the same schema modes offered by n8n's **When Executed by Another Workflow** node:\n\n- `fields` defines optional, named top-level fields and their types. Unknown fields are rejected. Supported types are `any`, `string`, `number`, `boolean`, `array`, and `object`.\n- `jsonExample` infers those same top-level fields and types from an example object. Every inferred type also accepts `null`, so an unavailable value can be represented explicitly; a `null` example value means any type.\n- `passthrough` accepts any JSON object data without field restrictions.\n\nFor example, the JSON model for a single terminal step is:\n\n```json\n{\n  \"flowId\": \"customer_order\",\n  \"modelVersion\": \"1\",\n  \"initialStep\": \"done\",\n  \"steps\": {\n    \"done\": {\n      \"id\": \"done\",\n      \"label\": \"Done\",\n      \"terminal\": true,\n      \"requiredForCompletion\": false,\n      \"allowedNextSteps\": [],\n      \"schemaMode\": \"jsonExample\",\n      \"jsonExample\": {\n        \"message\": \"example\",\n        \"metadata\": null\n      }\n    }\n  }\n}\n```\n\nA JSON expression may return this object directly; a JSON string is accepted as well. Step IDs and schema modes are explicit—there is no shortened or inferred model format.\n\nThe canonical JSON contract is validated before a session is created:\n\n- `flowId` is a non-empty string; `modelVersion` is an integer or non-empty string; `initialStep` is a string naming a key in `steps`.\n- `steps` is an object keyed by step ID, not an array. Every step has a matching string `id`, string `label`, boolean `terminal` and `requiredForCompletion`, string-array `allowedNextSteps`, and `schemaMode` equal to `fields`, `jsonExample`, or `passthrough`.\n- Fields definitions contain only a string `name` and a supported `type`. Fields are optional and names must be unique.\n- JSON Example mode requires an object. It uses `generate-schema@2.6.0` to infer the same top-level field types as **When Executed by Another Workflow**; nested object and array contents are not constrained. Inferred fields remain optional and accept either their inferred type or `null`, while unknown fields are rejected.\n\nValues are not coerced. For example, `\"terminal\": \"false\"`, `\"allowedNextSteps\": \"done\"`, or `\"steps\": []` are invalid rather than being interpreted. Malformed models raise a node parameter error; with Continue On Fail enabled, the input item is preserved and receives the error message. A valid model defines the graph and validation rules, while session step data is the mutable JSON collected while traversing that graph.\n\n## Central gateway\n\nA central inbound workflow can build a stable key, run Resolve with an external event ID, route on `flowState.session.flowId` and `currentStep`, and call a specialized sub-workflow. Duplicate event IDs return `duplicate` without changing the session.\n\n## Code to Patch\n\n```js\nconst input = $input.first().json;\nreturn [{ json: {\n  ...input,\n  patchData: { entityType: 'company', criteria: { name: 'Ромашка', inn: '5610000000' } },\n} }];\n```\n\nConfigure the next Flow State node with Operation `Patch`, State Reference `={{ $json.stateRef }}`, and Patch Data `={{ $json.patchData }}`. The node preserves the item and replaces its top-level `stateRef` with the new version.\n\nObject-valued expressions must occupy the entire JSON field. Do not add whitespace or other text outside the expression. For example, use `={{ { messageText: $json.telegram.messageText } }}` rather than embedding that expression in a larger string. If an n8n version still converts the object to `[object Object]`, use `={{ JSON.stringify({ messageText: $json.telegram.messageText }) }}` as a compatible fallback. Flow State also recovers whole-field expressions from the node's original parameters when n8n exposes those parameters at execution time.\n\n## Multiple workflows and sub-workflows\n\nOne workflow can Create Session, another can Resolve it, and sub-workflows can Patch or Transition it as long as every execution runs in the same process and passes the latest `stateRef`. Handle `version_conflict` by resolving or inspecting again and making a domain-specific retry decision; never blindly replay a mutation.\n\n## Trigger\n\nFlow State Trigger selects one event entity (`Step` or `Session`) and then one event from that entity. Step events are `Patched` and `Transitioned`; session events are `Created`, `Completed`, `Cancelled`, and `Expired`. It can additionally filter flow IDs, step IDs, a session-key prefix, and step status. Step ID and status are matched against the same side of an event: `Active` selects the current step, `Completed` selects the previous step, and `Any` accepts either current or previous step. All configured filters are applied together. `Only Actual Data Changes` additionally suppresses `step.patched` events whose `change.changedPaths` is empty; it does not affect other event types.\n\nFor a transition from `ClarifyProcessingPlans` to `AddProcessingPlans`, `Step IDs = AddProcessingPlans` with `Step Status = Active` matches the destination, while `Step IDs = ClarifyProcessingPlans` with `Step Status = Completed` matches the source. The opposite combinations do not match. With `Step Status = Any`, either step ID matches.\n\nA valid no-op Patch is still a successful mutation: it increments the optimistic step and session versions and emits `step.patched` by default. Use `Only Actual Data Changes` when consumers do not need those events. Use `Emit Event = false` on Patch, Transition, Complete, or Cancel when the mutation must not emit an event at all.\n\nOutput detail can be metadata only, the current step, or the full public session. Step Status controls filtering only: even when `Completed` matches the previous step, `Output Detail = Current Step` still returns the destination step. Use `Full Session` and read `session.steps[event.previousStep]` when the completed source-step data is needed. Step and session detail are captured when the committed event is published, so a later or re-entrant mutation cannot change the event's snapshot. Every subscriber receives isolated values. Models, processed event IDs, and compiled validators are never included. Correlation and causation IDs are propagated.\n\nTo launch a sub-workflow only when data in an active step actually changes, configure a workflow as follows:\n\n1. Add **Flow State Trigger** with `Event Entity = Step`, `Event = Patched`, `Step Status = Active`, `Only Actual Data Changes = true`, and `Output Detail = Current Step`.\n2. Connect it to n8n's **Execute Sub-workflow** node and turn off `Wait for Sub-Workflow Completion`.\n3. Accept the complete event item in the sub-workflow. It includes `eventId`, `stateRef`, `flowId`, `currentStep`, `change.changedPaths`, and the current `step` snapshot.\n\nEach matching patch starts a separate execution, so use `eventId` as an idempotency key and do not assume that concurrent sub-workflows finish in event order. If the sub-workflow patches the same session, set `Emit Event = false` on that mutation or apply an explicit causation guard to prevent a feedback loop.\n\n## TTL and capacity\n\nActive TTL defaults to 30 minutes and terminal retention to 5 minutes. Access extends active TTL. Cleanup runs before operations and every 30 seconds. Expired active sessions emit `session.expired`. The default capacity is 10,000 records; expired records and then old tombstones are removed before an active session is rejected with `capacity_exceeded`. Active sessions are never evicted for capacity.\n\n## Storage\n\nState is backed by Redis via the **Flow State Redis API** credential. Keys are namespaced by the credential's key prefix (`flowstate` by default): `{prefix}:session:{sessionKey}` holds the record, with companion `{prefix}:ver:*` and `{prefix}:status:*` keys used for atomic version checks, `{prefix}:id:{sessionId}` as the reverse index, and `{prefix}:events` as the Pub/Sub channel. The public `stateRef` contract is unchanged from earlier in-memory versions.\n","readmeFilename":"README.md"}