{"_id":"@camstack/addon-pipeline","_rev":"363-f4e0a24764a791cb2e28f89d2f4c042a","name":"@camstack/addon-pipeline","dist-tags":{"latest":"1.2.292"},"versions":{"0.1.8":{"name":"@camstack/addon-pipeline","version":"0.1.8","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.8","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c0c0a18f768fd7489ad82a4af7ca06802b2bf97b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.8.tgz","fileCount":107,"integrity":"sha512-bFkYBDeBbrVPrwZtK2gbKCKmlPadeamMtx54/p1memmMP4rXLlG3/RAYTxNmKvM2kHSVCLEA8VoivgCc5Bxwiw==","signatures":[{"sig":"MEUCIEuUzG6BOVtSp0Vw9tTtr3oQyKVkm4LyP7HXoLSKuc3pAiEAi1/bWngw5zlEYhGhSADJTgGR2W8R1B3whTLKtWpJS78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8530255},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"deae6e1a95ddaf1da27e54a369442aa3bbe9c4bf","scripts":{"dev":"vite build --watch","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","name":"Pipeline Runner","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","name":"Detection Pipeline","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"kind":"wrapper","name":"detection-pipeline","defaultActive":true}]},{"id":"motion-wasm","name":"Motion Detection (WASM)","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"kind":"wrapper","name":"motion-detection","defaultActive":true}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","name":"Decoder (node-av)","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","name":"Audio Codec (node-av)","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"stream-broker","placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","name":"Audio Analyzer","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"kind":"wrapper","name":"audio-analysis","defaultActive":true}]},{"id":"stream-broker","name":"Stream Broker","entry":"./dist/stream-broker/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"kind":"wrapper","name":"camera-streams","defaultActive":true},{"kind":"wrapper","name":"webrtc-session","defaultActive":true},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.2","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.8_1778590213327_0.12394155289543707","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@camstack/addon-pipeline","version":"0.1.9","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.9","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d623de783ae25eab7b9f3bfe9c4f63671e075902","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.9.tgz","fileCount":107,"integrity":"sha512-FhhQQe74zTPaSbuKWnjzNXkOcyfit9C2WNwuabSWv7rBntPBqwjb/bLFX90FFnaA75tTfQmyZkv0DFrmqpin3A==","signatures":[{"sig":"MEUCIQCoLkxXoJCHxE61ZJf0VLqMQipDqpLKfZQdDjHk8YuckwIgNJH4RNPuu7CnpecQInLBi+DG5XCAwmLVg+XAw/kdogA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8530255},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"50f329c0fba95228842190cd857cc2f52fa3b3b6","scripts":{"dev":"vite build --watch","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","name":"Pipeline Runner","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","name":"Detection Pipeline","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"kind":"wrapper","name":"detection-pipeline","defaultActive":true}]},{"id":"motion-wasm","name":"Motion Detection (WASM)","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"kind":"wrapper","name":"motion-detection","defaultActive":true}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","name":"Decoder (node-av)","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","name":"Audio Codec (node-av)","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"stream-broker","placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","name":"Audio Analyzer","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"kind":"wrapper","name":"audio-analysis","defaultActive":true}]},{"id":"stream-broker","name":"Stream Broker","entry":"./dist/stream-broker/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"kind":"wrapper","name":"camera-streams","defaultActive":true},{"kind":"wrapper","name":"webrtc-session","defaultActive":true},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.2","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.9_1778593491440_0.9766684181034877","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@camstack/addon-pipeline","version":"0.1.10","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.10","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"fa5ca029f3b522c50e5509598d4c52a25e00d86e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.10.tgz","fileCount":107,"integrity":"sha512-gm2sVZdpOi6WxakYOkP0A72JSyjM/4KN8mduDStln73O7AvzUwkgwMTMHYAo9s42saReg++7aswLHJh8nFGOEw==","signatures":[{"sig":"MEYCIQClLZyIMNgtuyOv1ZEerSJeTK0fi3m9VM0ZXvKEWv3oogIhANPIwKKycQxeN40Dc/u7MBjlZW3iCoPdI5dKAxZtRMki","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8570485},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"cdd42e387a5d10e16a87926f7ab7bb5436ff0df2","scripts":{"dev":"vite build --watch","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","name":"Pipeline Runner","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","name":"Detection Pipeline","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"kind":"wrapper","name":"detection-pipeline","defaultActive":true}]},{"id":"motion-wasm","name":"Motion Detection (WASM)","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"kind":"wrapper","name":"motion-detection","defaultActive":true}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","name":"Decoder (node-av)","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","name":"Audio Codec (node-av)","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"stream-broker","placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","name":"Audio Analyzer","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"kind":"wrapper","name":"audio-analysis","defaultActive":true}]},{"id":"stream-broker","name":"Stream Broker","entry":"./dist/stream-broker/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"kind":"wrapper","name":"camera-streams","defaultActive":true},{"kind":"wrapper","name":"webrtc-session","defaultActive":true},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.2","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.10_1778659622747_0.7249357628696442","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@camstack/addon-pipeline","version":"0.1.11","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.11","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a69d5531db2855b393ae3624e1e50642e416f481","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.11.tgz","fileCount":107,"integrity":"sha512-+UkGv2kjOHlE7Tx32/GwFw7rEQO1usrknllwG2x7UME2Q+RPqRHXErpxGMWU6XtgrAZNR7+ndAcLdGkMX0QOsA==","signatures":[{"sig":"MEUCIQCAP6bMNKlQHmpL8ClGu1FD+UxY2NJc/StG90ffgFxf5wIgB8L5jnebfCxaUAExFi5FW8NUQ6tTb9r8j8aIjcxwasc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8662638},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7d4ad636f9cb29aac41d1a3636cd1f3d521a8584","scripts":{"dev":"vite build --watch","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","name":"Pipeline Runner","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","name":"Detection Pipeline","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"kind":"wrapper","name":"detection-pipeline","defaultActive":true}]},{"id":"motion-wasm","name":"Motion Detection (WASM)","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"kind":"wrapper","name":"motion-detection","defaultActive":true}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","name":"Decoder (node-av)","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","name":"Audio Codec (node-av)","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"stream-broker","placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","name":"Audio Analyzer","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"kind":"wrapper","name":"audio-analysis","defaultActive":true}]},{"id":"stream-broker","name":"Stream Broker","entry":"./dist/stream-broker/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"kind":"wrapper","name":"camera-streams","defaultActive":true},{"kind":"wrapper","name":"webrtc-session","defaultActive":true},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.2","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.11_1778706074771_0.7254172575080036","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@camstack/addon-pipeline","version":"0.1.12","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.12","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d3b9b1e1f058bf7fac06efbdf7f29d61b61da00a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.12.tgz","fileCount":112,"integrity":"sha512-fWJXcySg+sG63D5rs+pNF9Zu4qknU+kxhAhBSNAZYUqA9docxSa9UyfED6bm05MRzp9uwxbydvRP8GR3IKzBJA==","signatures":[{"sig":"MEUCIQDcd+Vnl8ytCma/Sw4censfbMD4NxTOcqghcS0f/BBmzwIgTBCnJZICzIIwzoDQTvJvFgZHg1n68OWnje1gbSn2y5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12081475},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"eb96df3c7d9de49f6eb0890574a717637b093bb0","scripts":{"dev":"vite build --watch","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"kind":"wrapper","name":"detection-pipeline","defaultActive":true}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"kind":"wrapper","name":"motion-detection","defaultActive":true}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"stream-broker","placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"kind":"wrapper","name":"audio-analysis","defaultActive":true}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"kind":"wrapper","name":"camera-streams","defaultActive":true},{"kind":"wrapper","name":"webrtc-session","defaultActive":true},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.2","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.12_1778782634059_0.10213162302931833","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@camstack/addon-pipeline","version":"0.1.13","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.13","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d67d3923f7de5da21d0470cd87ae8b2360377521","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.13.tgz","fileCount":113,"integrity":"sha512-WozQJTL/Mu8WAgcc0kLdfbyIytMuHT883vvoQNk44NoGz3VRMtVm5wKUat1c0/Re2pDCqNM10SEWcKLB9RQYoA==","signatures":[{"sig":"MEQCIFCJZngfifPQjwbj74miMYBe3NwK/SmYjFwqYxRLfDF4AiASeuHF1bn9tPltlxGfcL4lbwYlyT27qCE8B4eYY/pbyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12160978},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"035325c7a95216442bf2ed10154f1f81e03313a3","scripts":{"dev":"vite build --watch","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"kind":"wrapper","name":"detection-pipeline","defaultActive":true}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"kind":"wrapper","name":"motion-detection","defaultActive":true}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"stream-broker","placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"kind":"wrapper","name":"audio-analysis","defaultActive":true}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"kind":"wrapper","name":"camera-streams","defaultActive":true},{"kind":"wrapper","name":"webrtc-session","defaultActive":true},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.2","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.13_1778853138394_0.3422496734870841","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@camstack/addon-pipeline","version":"0.1.14","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.14","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e9b67c041fa5cd20d6ac190b033fe09afe909e08","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.14.tgz","fileCount":113,"integrity":"sha512-3F0af6UuY8iC6fYctmBswY3vXbH9klZZKmm9M6+EIJvMMrrf1KYFIfEvKFb0gBfm3st8oAg54SWqssna8C8D5w==","signatures":[{"sig":"MEYCIQDTxnKABpX81qiev55EcbdZ2/RDHLyth2PbzmuVpr4/JwIhAKBU1gCa5rxKGYwzMFitmb58Wya8hZYwc04RgDS4KWxQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12102102},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bc7a71112fe312ab124e309a0f8a74bba066d322","scripts":{"dev":"vite build --watch","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"kind":"wrapper","name":"detection-pipeline","defaultActive":true}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"kind":"wrapper","name":"motion-detection","defaultActive":true}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","execution":{"group":"stream-broker","placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"kind":"wrapper","name":"audio-analysis","defaultActive":true}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","execution":{"group":"pipeline","placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"kind":"wrapper","name":"camera-streams","defaultActive":true},{"kind":"wrapper","name":"webrtc-session","defaultActive":true},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.2","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.14_1778868759767_0.9712565495697207","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@camstack/addon-pipeline","version":"0.1.15","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.15","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d00dac57ccdd5f159a8eaa7a9a588cad338274b5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.15.tgz","fileCount":94,"integrity":"sha512-rbD1++tDlhBADE+kcWInr1Aai+nQnZ+Lf+bVquLPfFESpq3BUaEsA0qRkCkJ+F1hBMi6eS7ACtJ0Pt6aLomOlA==","signatures":[{"sig":"MEYCIQDV+x1kaw8G4qxTOL3U6qMIsuimEHG6tUZk6HJovtlsbQIhAPowtNVTeUgv8mPiuXnoYX8y3kxGQfTrHevy+dK4t+jI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12854388},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"08576d8be3c0bab392a87ef1998f00520adafd07","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.8","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.2.4","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.15_1779314319837_0.8480064265849123","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@camstack/addon-pipeline","version":"0.1.16","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.16","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"272d3f9a0857fc1445b845b845255f16f42dd705","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.16.tgz","fileCount":94,"integrity":"sha512-0JfKFUl75pSPu17nnVVOMrl4j1xnFJ/HERMUXzCtn9BV4B1e2mdHwCcKe3gM+CGbdvbyH+PvdJm+z8nWlMn9Mw==","signatures":[{"sig":"MEYCIQCdzLQbcB1vTrguLFM63/xg8esnH6oPY7E+0Ujqy19DIQIhAI2e0bDFGaxCP07XQhsGfmFRIGbbqSURRozM0UXSHkSt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12854388},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"eec477aef80a7a3bdbdb97f7e5e641d183883cce","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.8","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.2.4","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.16_1779315563239_0.2961116484352089","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@camstack/addon-pipeline","version":"0.1.17","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.17","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"aa7a0cc4deef78c2137033de1d173478d3523090","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.17.tgz","fileCount":94,"integrity":"sha512-QVLVYh+VhJcoxSI04u53qpnY0iflBMidptoH+T67UoRoJdvuQbJj1h5cyIzHy1LfmHyphZTXeZdFbd5cEXCrNg==","signatures":[{"sig":"MEUCIDd83XUm8KOGmO/KVAm4q0/szaIlsE+P37rfYRI0cw74AiEAhjDr21ilSy/0ba70pSFVzoJUwMcrz7aUyzZyIVcbi5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12854388},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"72b1ff21c0f57e2b07d08ff983243a329f97e700","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.8","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.2.4","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.17_1779344624112_0.1474481573087283","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@camstack/addon-pipeline","version":"0.1.18","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.18","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f70b1bb5d17a019cf52840ff993d8e2a2468e150","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.18.tgz","fileCount":94,"integrity":"sha512-B6wsFWnAWupzYHBV6CIdTiKPXr9L2SHMTz1TuJFa7Chez4AbS7DNpPsrBng6FN27goKRLGB3yolvb4iHbz3wKw==","signatures":[{"sig":"MEQCIDJIdtJOKU+kgRmi5NSTTEZKf6kx9Yns1t1FrgAls5q2AiBOb9OoCnb+Dzw+74081s8oKHhz7xOVHFcf1i0BGqGTCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12860529},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"57014199a8383b9241f63f8b2faae629d3897371","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.7","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.2.4","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.18_1779375518012_0.5424515169981885","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@camstack/addon-pipeline","version":"0.1.19","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.19","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f70982a09546c6c5d362cd73a1a318e7a45c1509","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.19.tgz","fileCount":94,"integrity":"sha512-tXwUa4W/NSMfq4b4bYwEt2NxA8aHJ7zgkiffGZxK7XbZ7CPb91lnONrcnBEKUfLrQrFdXJsVAeZs3gIFBW6Tpg==","signatures":[{"sig":"MEUCIHl/bOLoxx8ksx9qOw/t801x7HvBnEV84iYf9x5pqFIyAiEAkL0NxBcKh232YPiksblmlH8iACqP/CutinjPBUkSgno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13400164},"main":"./dist/pipeline-runner/index.js","exports":{"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ad88be81ef29d94f36b601fb934ca58265b9e71c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.0","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.7","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.2.4","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.19_1779895657078_0.3205593934981439","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@camstack/addon-pipeline","version":"0.1.20","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.1.20","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a341c5ed182a8476cc7b96b3c7efabc393093209","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.1.20.tgz","fileCount":101,"integrity":"sha512-m/0hTTwSIPUyzDESxdOaxeJPw4zLwFCIAqJunwwWlE2voJna1v4Pkzmc1pjSoTENWLPzFcbZvpFXHT5DMmDAKg==","signatures":[{"sig":"MEQCICgThEXH2+XTqTODug3FgBC42VSn897W6P3PjlPk78A9AiArOttmS8YxrV6uDs4+ABiOqfk7wAkaQOCpixCO2BS8Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16743020},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"da970bd4042115c7704cc247fabeca41f9e71a4a","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.4","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.7","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.0","node-av":"^5.2.4","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.2.4","typescript":"~5.9.0","@camstack/types":"*","@vitejs/plugin-react":"^4.0.0","@module-federation/vite":"^1.15.2"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.1.20_1781359517665_0.6510401589966468","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@camstack/addon-pipeline","version":"0.2.0","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.2.0","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a21b314bc15f7fd7413dc2f213bd4ce52d852b79","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.2.0.tgz","fileCount":63,"integrity":"sha512-swE5ucxc89eLqh7kW+6izEHXjnlhzJ97BcBGIK8mpeX5+vIrjfp9sg22OWQYW3KGpsHFUUrCHNaDkpwDXaRfbw==","signatures":[{"sig":"MEUCIC3TtCw74g7+fWNmKhgsmZz4IarvEe88Ia0dOz6+kkvlAiEA279pL8/fxjmB9ZnTx2pbfkwn1ROfjnH4GNnaY/pjHyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6772912},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6cd93d2339876d7b0f2a5a4988fc40c0309b58f7","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.4","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.2.0_1781971823708_0.8480358441473301","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@camstack/addon-pipeline","version":"0.2.1","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.2.1","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8a74e8a191a08a7dcda8f143c1c91d15fdeb9f6e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.2.1.tgz","fileCount":63,"integrity":"sha512-uY2lWG4D3kXsVZi752T235NgUslvxuPPwjPb0Lm1zv2Ey91+UDxRt1DsaZHZzyg8ttthMu5R5Mwix55GACNqTw==","signatures":[{"sig":"MEQCIDUodT3KQiZPQbNifMixkADGJo+Ug8Zjwts6Sfrqk22sAiBceKWUgAxvnqfHwAAe9oOQR3aI+Zye8N3B5+jnw7p13w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6772912},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"77eaa34740405947a0996a99ec79727ce7ebfbf7","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.4","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.2.1_1781976514419_0.9521119650225345","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@camstack/addon-pipeline","version":"0.2.2","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@0.2.2","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"98cf2df6f987fdb952361c0dbd4d7efd11a7089f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-0.2.2.tgz","fileCount":63,"integrity":"sha512-tgySkolQuTybugMORUzgbcu15eRLNuqgzng2NLp4l/DjnX8sHfDIeYrHQ5W6LtWtZDCadzqoNKiqfF99yDm04A==","signatures":[{"sig":"MEUCIQCufa6jJHyURP1tr1HFCr7tJAbfsrlg3ZPRxS73/rtqyQIgLscu80T9NvrJ8f3dFe3or2rRcbuu7fOssxQjxzLWjKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6772912},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"869b8999830bbf4622fff843cc972d73598f0a48","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.4","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_0.2.2_1781982240755_0.14817371653439593","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@camstack/addon-pipeline","version":"1.0.0","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.0","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b1c734690c3a3c1bb38f169e3d57e68a0860eee4","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.0.tgz","fileCount":63,"integrity":"sha512-egmSK4z/ScWcISpHPMs9luC+eUv3TrchE+uctQliPaEBhQHHD71DuYilEY9GfZj3PRZKoywCNYE0sHtFBoKbDw==","signatures":[{"sig":"MEYCIQD/JdyKD3yQfe4t9DQcLbkqI8mBqNVWOC/t+UjFbbmUlgIhAKCU9ewLZ27U5I0/8GRo9KTJf6hukVS/27KI3JzJFvJm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6772912},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3c84ffa169f53966421091fc4c2a1d22800e4d1a","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"sharp":"^0.34.0","node-av":"^5.2.4","onnxruntime-node":"^1.24.3"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/core":"*","onnxruntime-node":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","sharp":"^0.34.0","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.0_1781984127293_0.13904575841514388","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@camstack/addon-pipeline","version":"1.0.1","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.1","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"db7ea242aa98bbfffd10b99ae7a58e7b703eed2b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.1.tgz","fileCount":63,"integrity":"sha512-x1VpnjQ2p7u1AxocthEtfg2sOORBBrMrcDSU6ded6VzRCjz5jpSJ7ObzV/BE12G8gZYJAw5rS7HjN9xzEq+fLQ==","signatures":[{"sig":"MEUCIQCDJBix9Y3iJ/Kg02ce4x1qam0QtC3N3mcSWqRE/m7IDgIgODa8NnPBG1CQ6+Pu2RuPKRzD0ZxvxKtJuNJKXvs5tS8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6343875},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"77de452ee1ab6f27f8d814821dd53b03c4ec1565","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"node-av":"^5.2.4"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.1_1782041793233_0.21983643494938798","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@camstack/addon-pipeline","version":"1.0.2","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.2","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"9a3edad9b2f9392c89136fd054d01051236480f9","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.2.tgz","fileCount":63,"integrity":"sha512-5lH58K8MpyNZQhX+7BIubVRyE85yTdXaHyq6zQe1g7JgmvMdokK46qTcJiLfMYo19lWQ7NyqoiSNpMkh5LMpVQ==","signatures":[{"sig":"MEUCIBGL1i9ezgr/teoLcjQmTzIb0ne6dqU7M8rmjEL+hZ8uAiEAwnEmHSeCkJJl4TbxvEV9c3p6DV/YzT49jfvxTrmWWIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6349463},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"node-av":"^5.2.4"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.3","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^4.3.6","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.2_1782125084146_0.6939677930012984","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@camstack/addon-pipeline","version":"1.0.3","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.3","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d50bd453dba1048f60239127cf66fb0963f4d36f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.3.tgz","fileCount":66,"integrity":"sha512-VSTxqfI7IummMfuZ28esYi+onCUwT1VkjSGzeKTl3eKQ3uPgCGqprABshgYgYEn244KP0+Bk5d2Ig0O1CTgSwg==","signatures":[{"sig":"MEQCIBJ2NRGirAS7aLrNF+I2LhwFhBLxcKwanMpvv4kngeOAAiBKFzQ2IyMKwN840JEMG9frE+WRBWFarcicJKdWdVCGPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5866070},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5769c5c1bb46f2c6d7872dea470b2805e2598f6e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"node-av":"^5.2.4"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.3_1782141886448_0.660645655169958","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@camstack/addon-pipeline","version":"1.0.4","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.4","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"4f1be87510e21d054dd2880662fdd2e80962fe34","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.4.tgz","fileCount":66,"integrity":"sha512-fyJHsY0fF1y78WmSRB4W6MtyuBKcCgwFG1olgD74kjLgOSZVLPwJPXVx3Ofyp5v3EzpcjjndFBOxGYgA1txWWA==","signatures":[{"sig":"MEUCICDiGiPxgQpPFAmblxI3m+urUVo6l/5KofMq1oRSLYGKAiEA/kDTc0LZx1S0+duuPQojk1kbUa+YzPj/Fa3mtvAFjoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5866070},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8a24e1797ce44360f7008375089fa4bdd2fd68ab","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{"node-av":"^5.2.4"}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.4_1782161704198_0.955402163125453","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@camstack/addon-pipeline","version":"1.0.5","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.5","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"2801c0f2d710810c24f6d0ad375873407c31cb95","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.5.tgz","fileCount":66,"integrity":"sha512-w4cnZlI47x7cDCjFGHWaYHuQAhAZfZArCeoAPMKtnWghSpgpZs4vnSJjpoz4HXTxdvtBla2ACb+qS62v7PvfBw==","signatures":[{"sig":"MEUCIASU9PofGnja26ll71yHKQO9TOerSTQceOdOadLlreEeAiEA7kfcOwLycE2L4xCqJB2H9zBfX8a2ukbf4rRJ1ze9z1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5871133},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5491306d3e309f577aee50318f7a060401aff5ec","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.5_1782309265533_0.24964891771582431","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@camstack/addon-pipeline","version":"1.0.6","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.6","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"92390e0bf449345b8fcc0128ca57515386c7d315","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.6.tgz","fileCount":66,"integrity":"sha512-LaW+VgBZeRbkBPdlp2FC3tSbMtXWdbffW9aUD5/jXH/xHsZkCOrT540gudhctunjX8v2VyV40hBeHVGPPA+f+A==","signatures":[{"sig":"MEUCIQCWpmodgsQv7UKwSEwz1+4qvs73U3TplD4JU/5iikLgFAIgMvNXeL6+HKiAK2FaHn5unMbvpDIaozlP4yqJEr2eur0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5909756},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"45e2e207f5834463bec33e1eacdcd3033c5feb51","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.6_1782371982718_0.9499664107647736","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@camstack/addon-pipeline","version":"1.0.7","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.7","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"7f4114d7c80d0adecb427d04e00eb1f65af6da83","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.7.tgz","fileCount":67,"integrity":"sha512-R0/qzWaR3WkzeMVuQ3LGFrYAlWM+qwr7lX8aujvLeO664MfEaHVMe3orgJ0Y6Yf99YZjwyuHpAv7cWFolL/q6Q==","signatures":[{"sig":"MEQCIGqkMQb2+LpAIR45urkIz4Ak0yWIZz2NeO0YiHwVFCV8AiA/WftrJVCtjN5uke1okfbQeIGAqUaLhaXzHeOjC9/XVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5935916},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8735cd3ecff8cf3ac732c92daa7d832765fd54f8","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.7_1782411334619_0.7138305754727479","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@camstack/addon-pipeline","version":"1.0.8","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.0.8","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"32151c4d7908830b91d8c21fa9c76fbac2e45c76","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.0.8.tgz","fileCount":87,"integrity":"sha512-LUT9Ka28cZVrfqCLSrMQUZ8hyVik6HKA/2LT3XPHf2aFN8FWQia7XvWS7pDT+Y4pAdYMPTxmXiVoKZhIHEUp6A==","signatures":[{"sig":"MEQCIGfCllhGtF9gP9IfVZpQ/jhwwo045zDZA1AR+Db6URoAAiAcMtjapkwwt8bYzH3Ikydmp8XebecU+q/6JB+XDYwdxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6084260},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ac3a8254470fc686e0394aaaf84c1db0b387336e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.3","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.0.8_1782483244509_0.5151645987586826","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@camstack/addon-pipeline","version":"1.1.0","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.0","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"dad69ef528e0acc0d6e8c11fca56ea86a4c81ee6","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.0.tgz","fileCount":67,"integrity":"sha512-pNLZgcFXIMWP7FToanr1V9EVfuz1pJkT5cWmIyg8A1U7S/HLPAPlvwlqsfTFKri18uQD/BwyhJnjv3/C5VeZpQ==","signatures":[{"sig":"MEQCICmlzYVDBwbKvShJf79RCzJG1jzpWqNwLtvzjLxabJLsAiBG6elvRzcfKrmCArJsWUrmuRgONFDsNu5GQ1PJL1GjBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5975704},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2d745e2cc9551fad742fb415841d30921cd048a6","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.0_1782542992116_0.26095112175755664","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@camstack/addon-pipeline","version":"1.1.1","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.1","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"1a63ad6fc27c9b67ff21e7ba884309e58bf05ccd","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.1.tgz","fileCount":68,"integrity":"sha512-6CuOwrCGT5ZRqhIhrHyS6FrWlmAE+xM0YPurxW/CcL/uQjSlgVnsG4X8BfnVZIkY1fQvwkKXX/WYnDr7hashYA==","signatures":[{"sig":"MEUCICeWgqGZxin+nDmlwBviKwC99jpQKwEu+2+PrjD4v7vSAiEA5qNTcb3DItPan/jZwQ7rGLil9Y1mNBpydGhgqES0eyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6013490},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c85a105726fef882e1343498e1d6b645d148cb9b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.1_1782631876654_0.7689217529922197","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@camstack/addon-pipeline","version":"1.1.2","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.2","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e7f1bb6c511a4c1353c052ee8f146b03969135f0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.2.tgz","fileCount":68,"integrity":"sha512-9ta0DnCQzf3hsWHN39JRYv7Aln4cHwkiopf+X9jGGaxkxxUJq298a0MEv0B+OxLANIIoeB3dajOlXbDb0B3IWA==","signatures":[{"sig":"MEUCIFrNh7HQPK12hfTgH8Vo6151M1t9I8LNRJAcH8QLRn65AiEAsiofUmiy9oY1QQ4X8BrdmTqeobE7jYtvAVZtGROc3bM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6023916},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"dfff3af598d5ff8ec3031bf8e6d8d6b2401894a5","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.2_1782640425630_0.44483760662134464","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@camstack/addon-pipeline","version":"1.1.3","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.3","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"859e40140b8a74c8ac6ed9ac741dc667e0db230e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.3.tgz","fileCount":68,"integrity":"sha512-ryo6WWob8PL4l/wkudtuReea0KD67nydqme8OA0j9sdiNJW1a3vQ9AcTlFCPflhWEuaEUVZpj9l62d8Ov9d72A==","signatures":[{"sig":"MEUCIDeD/aJjCe816nSfmsEx8t+DnW9JtXU4aj+nuMuahFtFAiEAsP2neuO2FzZjxtg2lOjZtMsT5Nc5GF1WCUQwSgHSBh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6023916},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9ffcc99634e15ce90ac8ede5a8717b213921172d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}],"storageLocations":[{"id":"models","cardinality":"single","description":"Object-detection / recognition model files.","displayName":"ML Models"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.3_1782650747824_0.7366850723163461","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@camstack/addon-pipeline","version":"1.1.4","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.4","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f4a064a70d5fc85554450f26f2426fbd424aa1eb","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.4.tgz","fileCount":68,"integrity":"sha512-l0W7VQIDP3u7fqFPp0e6lvohNte4u6SRXp+6X2MOwAqpzK2KA2s02PccL9ZBJbxPHkcjeurcamifGiHpTI+bzQ==","signatures":[{"sig":"MEYCIQCj0BSlmmewrdiVeMqPBxgWctzL9sViw7AidpEovHbUegIhAN8BHGzdMkliCyZTv1vFZ6j/i6xSrT8cNbynZmPLVDds","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6022350},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a6792df7b6788747ab88efd03af3b36301c19212","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.4_1782658494409_0.06981479818462644","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@camstack/addon-pipeline","version":"1.1.5","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.5","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0f2f4f250aa7c3bd2cdd218502ede24142dbfa58","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.5.tgz","fileCount":70,"integrity":"sha512-CariyFUJWCL54VqwNfUIeT5tHPMuDN82oGiXsSBObwGuawEK1ckS8ke/rCy1kXXTdVyM1ipAaeKheR6oF21d6g==","signatures":[{"sig":"MEUCIDjD/MOXSgd/x9Cqepf/KHOb2pJXgeOygA0m0/vXuni7AiEA/OndqpbytLsXK/l6+vkU1kfWfC2pzeO6GK1vHOgjHx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6034832},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"72e077cbe5571142de1ddcae7acfcf35e7859220","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.5_1782681021610_0.7824845756721555","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@camstack/addon-pipeline","version":"1.1.6","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.6","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e077ecd7973fdf6ae31efa08f42404c42d408ab2","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.6.tgz","fileCount":70,"integrity":"sha512-UJaY/G6xZIypdjqtVKumcfCC1bwXEegDlicLRFWycZpoBoDGPn70dybsuDsYbngIx9dALCJ0LfcwxtFCZOyyyA==","signatures":[{"sig":"MEUCIQCxxf4yu0tw6bW9Mk0HCj7tKRYLUWXK7nvoqwsuqRbO/AIgchM8L4Ud/PlEYqYdNH6TR41lqVLBHtcx5wCkkzqxj+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6034832},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a7803894f49c97d8ecadbfe3142f768153f0d653","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^5.2.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.6_1782709215856_0.10819834646518545","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@camstack/addon-pipeline","version":"1.1.7","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.7","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"fa26843b8f8dbe5093dcb47cc8b5b9212ba91bcf","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.7.tgz","fileCount":70,"integrity":"sha512-4707Q5pjFkZGt0Dz8Xr2o50+2tGwf32oqc2Nz3ShQZMnqe2J7Fg9bcbp5Q1sY7HK6wQZbGerTRRgxCuY/O4w7g==","signatures":[{"sig":"MEUCIHaBoxlMnIqObmqw+KLM5h5qoji+jF5MLMupNUlK55JQAiEA3rnnuqCIBkwZvM0a1PoqOSQlr/IJvACCjKRSH7GYfqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6034832},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3e5c92479d0d438da5e90cc231e2560f5f625a5d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.7_1782729483585_0.058078398243741836","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@camstack/addon-pipeline","version":"1.1.8","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.8","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d26a9ccbf0a019f28bb584cdc4d61bee6c41d491","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.8.tgz","fileCount":70,"integrity":"sha512-X/Bnsr4lLj5ubQmZOu1rjqz1NCkTGXXfy7e6t4kzKXnKkL0Mq7if1fnVlNdmB6xQo/eke94Jk9uN/lN/MO/fug==","signatures":[{"sig":"MEQCIC6BCOfLStkwZ7D48sEL6ubM/0TuF1pkVBYVirGAlEL8AiBaz8qW415Y2bwJ3uLHi52hNkaglyKP9KEdk1evt5x4JQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6034832},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c7fbbbc74737ba730a853f6d74e738299543cefc","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.8_1782731245698_0.07146882691846401","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"@camstack/addon-pipeline","version":"1.1.9","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.9","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f2ebd92e37ee4819d0fa7a4b9adc21deda4319d4","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.9.tgz","fileCount":70,"integrity":"sha512-o292tRmjPJFUgH4wwz0AAhNL8ztLwOK4SDkUPhgU5Bq03LAQQPSPikufgad+kXIdd9Tg7wKfUr+JuVzUFon+Hg==","signatures":[{"sig":"MEQCIHlQ0qJDdwdgWN3ND0rcQb/w5WlVVaL5D7OSkvMGGI0qAiAYGGVarLEbBth7LtAUCyoJWGZX374/dk0WpCNw2GsYFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6037356},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"28180bb2da3f4f918f4046f7645ee0a856d40b98","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.9_1782743256570_0.7591766862877483","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"@camstack/addon-pipeline","version":"1.1.10","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.10","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"31e0b528079940825a1cec82a02fa4cde4290efc","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.10.tgz","fileCount":70,"integrity":"sha512-r65Gt8bMKQyphbqlTYkbXqQZEacZTbXRxLOzhOiM3JAmVSE1FPlOjjBNXXlFtPf8YxGHj1ruX6bX/YMLPZrgIw==","signatures":[{"sig":"MEUCIQD0yn791E/STD9L/pqEQheW8FQP93m/ckggVJB5aT2dygIgcUY1EWZkfO0/sXleqCjex8TeRYbOkJ9X6MFMZIyAXJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6043363},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c0e6ba6976cb765e99fff75e7c89c1948be0a82b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.10_1782834444132_0.25640532279126016","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"@camstack/addon-pipeline","version":"1.1.11","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.11","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c8d04285a7b85438f6f932ddb100d02625f2edf7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.11.tgz","fileCount":70,"integrity":"sha512-3GK7XgGqyEmNp9QeqGSvDQzDEhndFmjTM5ccBgTv6Ugrheoo5Hx7jtfgwOJGc2tgWYgJglRN6JVq0lukhBzzQQ==","signatures":[{"sig":"MEUCIQCdlOQjrcPopwxelPL/0O+oXJT/UMxsBx3e7C6RNZr+uQIgaDv5NGS4gY0qt+fFxvXlpTVGNaflb0cueNmpucAO1XA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6046115},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6626878bd6422838ba536e47b6eaf7a0baa8ee9c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.11_1782849379687_0.8905026109032141","host":"s3://npm-registry-packages-npm-production"}},"1.1.12":{"name":"@camstack/addon-pipeline","version":"1.1.12","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.12","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"dfc07832ab6bd1788fa40cde96cf7bcf081f3639","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.12.tgz","fileCount":70,"integrity":"sha512-hstP1HZFm6SfttueQZCtbQpA1Qiz8z+3jYLoEu1h18GeWm6kWVrsDUpBNBfDP4KPFjQBiqa0bEibd6uTL7+v/g==","signatures":[{"sig":"MEQCIBM3S4TwHMGksMUCB63RSupvgmKHpotQAcMpEIDjX295AiA4V/8oONFi8AzUNYtWX8oqdSb1cpgkynuQF9q01Mkepw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6051539},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"dc17a9374a5d70d319f832f1161673535f9d2203","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.12_1782867669545_0.9893541693730761","host":"s3://npm-registry-packages-npm-production"}},"1.1.13":{"name":"@camstack/addon-pipeline","version":"1.1.13","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.13","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"13d7a810761da60dbf31c607602fae36515bca9d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.13.tgz","fileCount":70,"integrity":"sha512-0+WsPqgVjzLcvLnLiN3uJvrTZsa4S/oe635b44hkdPO23el+LUz7FKBLjrLtj9arnMc5EW8rTWoE97WRo3o62w==","signatures":[{"sig":"MEUCIEx7XelNcItVs+iqBavONvqAOI2P+r9iilmI1tNaSsN/AiEAi+v4WSg1aP/1h0cMUgkMrhiady6hn48mgiItrHSD3r4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6052269},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"cf0e700edbcaa5c383c321eabf6f1f4e3f0f140f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.13_1782897912759_0.8246441733634786","host":"s3://npm-registry-packages-npm-production"}},"1.1.14":{"name":"@camstack/addon-pipeline","version":"1.1.14","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.14","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8914a3dafbf86bb15b619be0ef54552646964b27","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.14.tgz","fileCount":70,"integrity":"sha512-fQV2EdX3r8CBY/uyh9CJAngyBYMWu6mBXiDx31Dzwq1f6Ngy6kJVDJREnLgb5IH1SBNvBfLBco45Cu8KKeUEHg==","signatures":[{"sig":"MEQCIEjriD69NbO74jLbR/qRQkECxuYt68uD8+GjiLFcYUFgAiB81zMESJy7v3Xdiy48xjZeUopWk9riXdcI0ikTLX67hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6064576},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2fefea015860e8d2ec30757283ad3c1f8bc7578e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.14_1782928670802_0.3267729859856048","host":"s3://npm-registry-packages-npm-production"}},"1.1.15":{"name":"@camstack/addon-pipeline","version":"1.1.15","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.15","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"542f9bd447db23f61633c545b5ff6f62e5470fee","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.15.tgz","fileCount":70,"integrity":"sha512-Obza4OXFfzedpcmK1o4qz87cbIbneaPBygnT8k0Vuo16LdOlUE5uQLPvM5U/TkvBtMarU+p87lwx6s8Vuhh6KQ==","signatures":[{"sig":"MEQCIGNeB+IH+Nsx/G5KWkFP9J3ny2tEd1X4118122qsVrRHAiBpdGzNjUrdFLlSWQDfj3pjz5IYYTCAhjly5S75L57zoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6066444},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"429789a7ba9681438763bcfa4bee43af29d44f8f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.15_1782942544243_0.8954770193076558","host":"s3://npm-registry-packages-npm-production"}},"1.1.16":{"name":"@camstack/addon-pipeline","version":"1.1.16","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.16","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"438fa7195a7793cede5c08bc8cb7dc5ed4159d86","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.16.tgz","fileCount":70,"integrity":"sha512-leRcByv7mdYKkcBrVH7a2fkGat4X68+mX30yg2td4MbhlpPuOMkcE5K3uJL8Oj+3hz3swK6f4uzWqRN4JAF3XQ==","signatures":[{"sig":"MEQCIFJRPGzCBAVrk1IXrxcypFFH1ttG+63DQg35ScfdIWwDAiBEAaPflMN3M/wnZzBPFkPu5s0gU4xfexk6JZP/2IxYNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6068477},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fd2840de07b1d132c0a14537e595f746aab0365c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.16_1782977814703_0.3853795850765651","host":"s3://npm-registry-packages-npm-production"}},"1.1.17":{"name":"@camstack/addon-pipeline","version":"1.1.17","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.17","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c8be46bf8a2149742016bf185faf40b1f8f6c726","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.17.tgz","fileCount":70,"integrity":"sha512-jqFmHUg5CaRBeyspBeJRNFfcJcb3cddSMqy8FvKggXu+iAvB5lSzpguZmbAunqO4u6bk6U70knwGcNKFg7cCcw==","signatures":[{"sig":"MEUCIQC5tTPIVxcfz+ErLSKyA7kzBUTBTbZkTm12cE/uBicNqQIgCZowQJ6Ilw0SbVuMlBZ0XQG1y3oESETcu8OT+VSU8hQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6069740},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0fa09eabb99211ecc73a31b396f37ff52367ffac","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.17_1782979404773_0.07768272153949018","host":"s3://npm-registry-packages-npm-production"}},"1.1.18":{"name":"@camstack/addon-pipeline","version":"1.1.18","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.18","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"1b941da674845150136c5209e1abf4f98dfd84d6","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.18.tgz","fileCount":70,"integrity":"sha512-k5hbdBVrn3fDvfe3ysQdfOG97diyAZ8vynS+wV5IocXL8tft+KIvgoZZLNCfT/kOo32J3AloQCbF7GSkVPC92g==","signatures":[{"sig":"MEUCIH6SacVxHfYlj01WEe0v6yntoVzFptUhkK/GP+B9TXs2AiEA9tzItLAp4qsGbtSSI7abs6uhcC+KnnWwNgVyfsMJaUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6068812},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3e20756c4e142038de70436c24816d08704eaf69","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Hardware-accelerated video decoder using FFmpeg native bindings","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.18_1782980932062_0.0006752118541761831","host":"s3://npm-registry-packages-npm-production"}},"1.1.19":{"name":"@camstack/addon-pipeline","version":"1.1.19","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.19","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"519aad25cd9793304739ddf95fed03acb5a0291e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.19.tgz","fileCount":72,"integrity":"sha512-3pUPgT4csOZLnTFXYZg3LGeNSRtKaLm04pwo4FsxWmKBf2dtejg+H+Np0n0Nhi1WtyYPABM/qcLqEqTKwISXww==","signatures":[{"sig":"MEUCIQDsAeXnl0056ZDL38gswV5TWXd2L/yjq3Jd87S3rYXtqQIgHvlK90tu465T+e2xeUFH7bh9L0IGBUg3Z7j91D9yLVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6059808},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-nodeav":{"import":"./dist/audio-codec-nodeav/index.mjs","require":"./dist/audio-codec-nodeav/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"09495d0c58ff7be56490a8faccbfb8475fdc09c6","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-nodeav","icon":"assets/icon.svg","name":"Audio Codec (node-av)","color":"#0ea5e9","entry":"./dist/audio-codec-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O — decodes camera audio (AAC, Opus, PCMU/PCMA) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.19_1782996438534_0.582218260078158","host":"s3://npm-registry-packages-npm-production"}},"1.1.20":{"name":"@camstack/addon-pipeline","version":"1.1.20","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.20","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b5ee1b659cdb21c431114c2f2ea56865e7d6e809","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.20.tgz","fileCount":70,"integrity":"sha512-T8/ekBwxIZm3meAioYa1lE++T8+47qG0zpk1y0R5f8M8d3wqM6lFeRcarpEH7g2g215RyN4HS41c3bAL4/17Xg==","signatures":[{"sig":"MEQCIAJEv5ZkAgQl9qwUU3gqIGDmSJFguWVBYAne3xdStBq4AiBslZ0YY7NLYcPwo4P1NfS3duiK00SSWGevjG0gAyIAeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6121994},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"67a3360cf467c1a1b22742c85bf0301055186b43","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.20_1783010306633_0.5029353265502454","host":"s3://npm-registry-packages-npm-production"}},"1.1.21":{"name":"@camstack/addon-pipeline","version":"1.1.21","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.21","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"708b5ec580dd105e9e109bb916463daeffc17f1a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.21.tgz","fileCount":70,"integrity":"sha512-twe/uFPp+aC0DWhG55D9x62yQg0ER6qRGSFTHHmxVs/wncfaScSN4UR3k5o1bwHSPktG086oxFfWmtpRtNhEBQ==","signatures":[{"sig":"MEYCIQDaksvkDjY/AobadLtE/51Md3461yEp9HcuW5dNPEzLcAIhALQN+57To81udMWjTWrvlmHGaBrOnYzkcmWOrYsAiQgX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6144995},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b0528c6b2b076f351e78f741e62fd98ce32bed8b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.21_1783021448346_0.8719318639957199","host":"s3://npm-registry-packages-npm-production"}},"1.1.22":{"name":"@camstack/addon-pipeline","version":"1.1.22","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.22","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"76672617f8078fa41fad552c641c0eee66eca9b2","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.22.tgz","fileCount":70,"integrity":"sha512-989J5ovP5/c2he96EEJA2C/SwJjtFQwyANNLTfKOgTX2/NbpftxntHFtzabEQDoiHvjdRR4ezhPAQFb4Syu6Bw==","signatures":[{"sig":"MEYCIQDuKRKIOB8hvryDpvgOHsXVr7/o8w8JKdkWRMC6/JfyIQIhAN4QHa4EyhKYdLWRnOTJfs1oYOrwxrpKa6hKSbT9f4i0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6280555},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7ebb63db3042a3832f482517aef218e496bfec24","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.22_1783092437337_0.12351041748498282","host":"s3://npm-registry-packages-npm-production"}},"1.1.23":{"name":"@camstack/addon-pipeline","version":"1.1.23","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.23","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"fef99d078fe781d6a5984e576111c3fcac4fc6bd","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.23.tgz","fileCount":70,"integrity":"sha512-GOGkIXkbkEdiO5uCkxr9mdtff4OguYq2UDArlNJ5nJ1+xbut+ZM+GlU2OIz22VeKvExZAcILsrhxNu8alnwqwQ==","signatures":[{"sig":"MEUCIQCaNe7PWcs+R27FZcL26ISNTCmFtzBJvhlqqrhypyr0KgIgHEQypEyzauqBZLmryva+tqU0+RkL8dmlrqiNjdbbMdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6283985},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"632c73bd99a744fda8d34362cd69fbc275d891b7","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.23_1783100135092_0.36899606500243665","host":"s3://npm-registry-packages-npm-production"}},"1.1.24":{"name":"@camstack/addon-pipeline","version":"1.1.24","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.24","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"aefee5d05de68343a09105fc0da106af8aec29f9","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.24.tgz","fileCount":70,"integrity":"sha512-T8LvxwYru4Gl3Pk2pP9kZQFVJclZ8i4T0l5xV5xnJ+UsuBLLzECIxzh13d4u3WKCPSjKAOv3NuXXbY4FR8gdlg==","signatures":[{"sig":"MEMCH2BZpYFOraFFajivOuqQMAr08rRwCz6A9TViVqMCR84CICMxB+pnxYXFSsBwOxz5NV7JgPIjgnKootsLhyra/mKH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6286447},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bb2c6d0563182d17bd427afc2a4429a26ab4d817","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.24_1783129928008_0.2684590649038985","host":"s3://npm-registry-packages-npm-production"}},"1.1.25":{"name":"@camstack/addon-pipeline","version":"1.1.25","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.25","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"ff511a47be8cc74334e2118b18c90bf40b6c0361","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.25.tgz","fileCount":74,"integrity":"sha512-K8HUAj7GXGZNuE5y62fO/msbvhP9UjKLxPwTfILY3KLhhsfw5DxBQnvC6LMeTtWGG7DfyVTdfscY9C+4rELFQA==","signatures":[{"sig":"MEQCIC18RahrTigw/u/xPb6R5g4YLhuIko5SIVDyvcTfvRiRAiAlYR8XiVqZjzZ3s5cuZ07LHFBwCh9QtHh1F161bKzESA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6346983},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"cf8f721fce9f920f463bcb4c5076ba487329d871","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.25_1783137111305_0.3067844854247552","host":"s3://npm-registry-packages-npm-production"}},"1.1.26":{"name":"@camstack/addon-pipeline","version":"1.1.26","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.26","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"df66351e02c8d99f71efd2280f4d448018cc49ec","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.26.tgz","fileCount":77,"integrity":"sha512-3QdAx0Ov9PcBvGnHwGHyjXuqpvlu6Bu/evnQr7KLnqa5lar2KFkndnc+vKrB8T+ipHK+j/1G1n5jo10p8/CAuQ==","signatures":[{"sig":"MEYCIQDEbBhPXFZRgkzzR0ZeR3k6jBXyvDyhRNZ18CgH4v+Q3AIhAM7T3M5KhDQQ6wpdBK0YW0WfwOI9qSoKA2YMcklDhx7I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6472620},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bf4c3a59bd16757681268b3f05756dcf1d38c30b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — VA-API safe on Intel (a decode crash is isolated to the child, never taking down the runner). The sole decoder; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder"}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.26_1783169912161_0.2471925873814762","host":"s3://npm-registry-packages-npm-production"}},"1.1.27":{"name":"@camstack/addon-pipeline","version":"1.1.27","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.27","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"312b0d3d0c21528c944959809b21a126edefc0b8","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.27.tgz","fileCount":85,"integrity":"sha512-WCet+g4fi8VQkds2mdc3wJ7X1TypVXykeqIqBuJX2YE7KFG1Gio2/end8mOm9bxq6oQrfn8b9M/AQ4JdSUd6uw==","signatures":[{"sig":"MEQCICFJjqUH+uwcVRY51YPx4gY/M1lsQ3cSrvaWwhgz9/cbAiBd3D706S2ey0CWmHXNv6hXUC1CuOcqxWoW/FFvkBz1pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9573187},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"514cd17b5213e87300845ed498adc73f0347f6ca","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.27_1783177113554_0.9659337673721291","host":"s3://npm-registry-packages-npm-production"}},"1.1.28":{"name":"@camstack/addon-pipeline","version":"1.1.28","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.28","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e2f19843826bbdb599c16dfc19eb33ca9db2e1df","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.28.tgz","fileCount":87,"integrity":"sha512-cZnL+ix1IHAA5evKORpxoVL271CKxDfQ8Kqt+H4X54MbJWRtCMoKn9t6vA40cFYsWBngqqO4KTlzMTEliaLkKQ==","signatures":[{"sig":"MEUCIQDputMz6h347vmvwesFHpyE77aWf38K8MwM8ZSILhBKCwIgGq51bIdisq/RE1dhR9riG2KIDikDghdy5tZDcF0AzGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9620046},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7c372a9a8a97ef09149fb8b0bf08973eace82915","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.28_1783230455938_0.4769098341833733","host":"s3://npm-registry-packages-npm-production"}},"1.1.29":{"name":"@camstack/addon-pipeline","version":"1.1.29","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.29","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"68170f0e15feb31625b6f61e2f282c4dd0d1a47a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.29.tgz","fileCount":89,"integrity":"sha512-+v672kuKdiVYx1hKD1DU0NUHF5JOG2em4GDyKcOUbcjW7pO90dhWPQPjSuHcrEDDiYy/pZZcup/JCGOOTjjDNA==","signatures":[{"sig":"MEYCIQDqNHruqURxV2L42lUklwMXeLtCueMNEdJ9CKOZ/JzPiQIhAKGqinr+RJRnsFxTjpkHJdcj6BMNiJoDbe5xH0h4rUAN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9629240},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"27e938de43aac7e8ea212e44291db5a85a48d6a5","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.29_1783259298238_0.19433582762355606","host":"s3://npm-registry-packages-npm-production"}},"1.1.30":{"name":"@camstack/addon-pipeline","version":"1.1.30","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.30","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"34a97757ec7888ef0677c6eddee0a39c57a680b8","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.30.tgz","fileCount":89,"integrity":"sha512-jwtcNCG0wBZP52wiK3lAJbESKE7e5y3IFCsP8SCLcuTfwNeIAo6qN16dp5BbEn8LuECQUiqT1VYYH2tb10om1Q==","signatures":[{"sig":"MEQCIEiqQE3ziqMelTSbPIWi5RJdp60mCO9SEDe/cB+6WOfZAiAUP4splVWJ6NDvUWSn56tGjFX+PMvKd19PtfXz1vEGVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9631948},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"06538be62c0d9e02d9d947ff1eac9d9deea4aea4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.30_1783269490236_0.6051881660285725","host":"s3://npm-registry-packages-npm-production"}},"1.1.31":{"name":"@camstack/addon-pipeline","version":"1.1.31","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.31","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"849bd8116ed78514c38c27f2deadc6e7d1a82473","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.31.tgz","fileCount":89,"integrity":"sha512-xHLVkNPDNTpdlmenepZtAB+XJx7UIqSIJQnsuYp7Kd+kjMHDJa5oRl4JGs7z/HZWh14qMBHcmLAof0wt/N5liw==","signatures":[{"sig":"MEUCIDqntka87TkgkSW13gojA4zfcpB7bv27fLf0az2hpkZVAiEA81gstPvDsuTunOA/poZRd3D3wbLRs8rkz1V/89n8vZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9632038},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"15220b345f3ba7b1e08395f967b29d8a06bcf342","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.31_1783272610220_0.941995477204794","host":"s3://npm-registry-packages-npm-production"}},"1.1.32":{"name":"@camstack/addon-pipeline","version":"1.1.32","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.32","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"527a8a9673f771b6cbb093b323e702d8baf1c515","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.32.tgz","fileCount":89,"integrity":"sha512-BCszuXh6CGgD51XwdF+8kOWQDq975C6/rtS344MdI70RNDyw4yfXdfFuv8X8dgEKIC1URIMpbkrCsfE8caA4mQ==","signatures":[{"sig":"MEUCIAwydt2dq4lvS93LmIE5KbJ7ElcFM9h2rZJD0NpqXyJCAiEA3Ds90TjRaXRzD0859eJM1Ui+LI5hmyXS3QTkIjXiQMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9644990},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0fb5f1eabf888893b5bd2f543802c02b3d48b315","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.32_1783282163067_0.10129520726484276","host":"s3://npm-registry-packages-npm-production"}},"1.1.33":{"name":"@camstack/addon-pipeline","version":"1.1.33","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.33","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"552800b4b124303bf2e7a9f617b5b6fdbc956d97","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.33.tgz","fileCount":113,"integrity":"sha512-X1NW/G0l5GSaHTTCCbmm0pOxbkRGiSJTl+YK93NVL0tEyjlWjgVeMiY0KTYdrEJL4ujSzNYZbiADkgNQPvaPrg==","signatures":[{"sig":"MEUCIElRJFMjPZ+cmKR8IWdFY49le5nzgh6zsuBozpFXpf9oAiEA4NUZcKNtbimQdEumXo5bG+wJ086rRlltVqCDweozf48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7035556},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"da776806b5248eec4c5612a1afcef33206718556","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"10.9.3","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.33_1783356883500_0.13946794014121844","host":"s3://npm-registry-packages-npm-production"}},"1.1.34":{"name":"@camstack/addon-pipeline","version":"1.1.34","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","decoder","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.34","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"4e9e25e387653af0064f12fdabf54f779aa6527e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.34.tgz","fileCount":85,"integrity":"sha512-NVSNE1Oh6B/+tWdH8UjybI/q/lR6X9ilaiHgJHPwmorexe5+Npdm23Ew+VHV1VFjW907Pb+Unc31S2pMBIWsuw==","signatures":[{"sig":"MEUCIBfhlxm7dffFY0KwWGzZBYQz1v2C1Az3o42PTDkYZ/xXAiEA4lA1wVuAOs++Zlt8cjmvwdza1K83ap7Y+12VCvgKtQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6703868},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./decoder-ffmpeg":{"import":"./dist/decoder-ffmpeg/index.mjs","require":"./dist/decoder-ffmpeg/index.js"},"./decoder-nodeav":{"import":"./dist/decoder-nodeav/index.mjs","require":"./dist/decoder-nodeav/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"89d838176cf1b38cf340c4d6016d9747ac12fe67","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"decoder-ffmpeg","icon":"assets/icon.svg","name":"Decoder (ffmpeg)","color":"#0ea5e9","entry":"./dist/decoder-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Out-of-process video decoder spawning an ffmpeg subprocess — a decode crash is isolated to the child, never taking down the runner. The DEFAULT decoder backend: it registers the decoder cap only when the node's `decoder` settings section selects `ffmpeg` (the default). ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"decoder","optional":true}]},{"id":"decoder-nodeav","icon":"assets/icon.svg","name":"Decoder (node-av)","color":"#0ea5e9","entry":"./dist/decoder-nodeav/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"In-process video decoder using FFmpeg native bindings (node-av) — no subprocess lifecycle (nothing to spawn, supervise, or leak). Registers the decoder cap only when the node's `decoder` settings section selects `nodeav`; decoder-ffmpeg is the default backend.","capabilities":[{"name":"decoder","optional":true}]},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, decoders, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.34_1783370900554_0.213632805799423","host":"s3://npm-registry-packages-npm-production"}},"1.1.35":{"name":"@camstack/addon-pipeline","version":"1.1.35","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.35","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"478827914014c12d60753eb6812625e38fb18cc9","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.35.tgz","fileCount":101,"integrity":"sha512-5jdedAP8lHODeIsVKh+KqTz6vuz3YUj7UMWKNUZGXhyWwqwDKz2MaBlU08OMHr7L1gGwZS2GBVDN6eK0nx++Xg==","signatures":[{"sig":"MEYCIQDyNfjqr8T9q7Ei5UaZRnMDmxonNP2YFh7gsp4pSicwdwIhAMIQsXgZxWR+pZv8LusI42zkmFsB8b5tj+LudFua1m0Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8912700},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"99d8f7cf971c989cf316116cf8c42dcc42a4b0fa","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.35_1783403833275_0.7084409572254844","host":"s3://npm-registry-packages-npm-production"}},"1.1.36":{"name":"@camstack/addon-pipeline","version":"1.1.36","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.36","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"bd6ec3a7b4d36aa9541692ff29cbe49135261ebe","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.36.tgz","fileCount":101,"integrity":"sha512-QrH/hz3MAkIGloZZyCxWmZXF03NFNC8g8/dcLZWE92B6j0fmBn+XBeLZ5V+8QTmUUw9KnVX4jObIovZqpyKmDw==","signatures":[{"sig":"MEUCIQCuzlaw9QvwKPscf8ltq8Y+crtZFOShWA1TjvqQGtcncQIgAfzSGb16LidDk6uxF4QLULviS9grIFNlp+fU4+1HyrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8912700},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"99d8f7cf971c989cf316116cf8c42dcc42a4b0fa","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.36_1783404323450_0.35717385044329","host":"s3://npm-registry-packages-npm-production"}},"1.1.37":{"name":"@camstack/addon-pipeline","version":"1.1.37","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.37","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"3f3d96e325f9f786f493dd0fd7299e525fb29ffe","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.37.tgz","fileCount":101,"integrity":"sha512-Ry4g+bXwBNb+2Glg5j1c6xLIw++4DYGrCqcGSSfdpko6cxNI/HGmPGshsbFD+8zNa/CDInkA9coTX9h9ger3wA==","signatures":[{"sig":"MEUCIH2n98rx0rqsqrXibRTWIWbuwkIrBslCCUc+XT/S4/A9AiEAv4EFwT/4DWUUFChhs8V2Y0PsHu7fow5bhVWGG4mIn40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8913895},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ee081fc34461f7573f7d270e8c90f50d6f1822a5","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.37_1783414126523_0.6250304444707715","host":"s3://npm-registry-packages-npm-production"}},"1.1.38":{"name":"@camstack/addon-pipeline","version":"1.1.38","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.38","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a1a7ed10853d2f909cad9d8e3d800b515e5c4a7b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.38.tgz","fileCount":101,"integrity":"sha512-52XoRlLDyo1zgdEWebIXv4BpOI+SKsdQTtot6Uf/vE+yH7c3gizvNu4Y35Aa9tX9cxpi3VGYE3mvJKVqNsyVMg==","signatures":[{"sig":"MEUCIQCVHmzA08kX1Mr886RIAZYqHYRt6GH6D6nTxze4F3hI0wIgGV4I9Gz29U2P9N+fMro2mjUb/dOX2m2fQhSFJhknm6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8913895},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./audio-codec-ffmpeg":{"import":"./dist/audio-codec-ffmpeg/index.mjs","require":"./dist/audio-codec-ffmpeg/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8e5407ce1e9d79a32f82f54f692ab4d6ad40d262","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-codec-ffmpeg","icon":"assets/icon.svg","name":"Audio Codec (ffmpeg)","color":"#0ea5e9","entry":"./dist/audio-codec-ffmpeg/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Bidirectional audio codec I/O in an ffmpeg subprocess — decodes camera audio (AAC, Opus, PCMU/PCMA, G.722) into per-consumer PCM sessions and encodes intercom PCM back into camera-supported codecs. A codec crash is isolated to the child; ffmpeg is provisioned per node via ctx.deps.ensureFfmpeg().","capabilities":[{"name":"audio-codec"}]},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.38_1783420648198_0.4660161340193181","host":"s3://npm-registry-packages-npm-production"}},"1.1.39":{"name":"@camstack/addon-pipeline","version":"1.1.39","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.39","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"ae92c9ae87ef09e29dabf7d23de4f8c8ff0ecf99","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.39.tgz","fileCount":99,"integrity":"sha512-GKFdIyShA2ZAA47ieQFkM89MzOtP5WaJn5IoRoJ7RQSkzsm5zr0ofRk3KL33T2OxcwklwGNIzY6dm3/zIJrq7Q==","signatures":[{"sig":"MEYCIQCUkUsOfwodSIUO7o1iiJEkm2ujlzqKZj33QVPYc35HVQIhAL/Y+2CT5qRjFfHwZZMnMs/2njoVqoJ4w9Er94eS8Xl1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8828608},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"891fe997c678fa17ed8abe4a26089b4f0aaf1f9a","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"storage-evictable"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.39_1783421333058_0.3094820343633391","host":"s3://npm-registry-packages-npm-production"}},"1.1.40":{"name":"@camstack/addon-pipeline","version":"1.1.40","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.40","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"42f2135dd989446665c7a3a9fb0527032fc96338","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.40.tgz","fileCount":103,"integrity":"sha512-NacaB/1cP/87fuI9vFHMk1qTd6JU2B4q8ZR8YdY8CtXZeLadaN6Vp1iNjmKAK88DznwXXzL+v8Yhti7a2GQ8lw==","signatures":[{"sig":"MEQCID9HNROx6rJLKeZKsQqcCabtlCLmCOPWeI76HqtwH/JQAiAVrnpCxnKIzfzl8ySEZosAkT3mQ3CVQOL5cMiugdfF2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8993677},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7c9424bf09d6e912133e01a5fd9ffe1eba941d57","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.40_1783547469014_0.017133411351158978","host":"s3://npm-registry-packages-npm-production"}},"1.1.41":{"name":"@camstack/addon-pipeline","version":"1.1.41","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.41","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8873358224d8d16d8f5ec3758afcff831ab62c0d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.41.tgz","fileCount":103,"integrity":"sha512-iZeAtbuWHz+WxHJWWWKSrzekz9vHNSRfu7a7mqqWORQLdgnZdkQvJ0Hi8DI8LREr+SKIWkwE9FMRTICPWkQ/xQ==","signatures":[{"sig":"MEUCIEFNtv/48D21LG4AsnpHhkZthxtEleA7MbKoXBVvuzJ0AiEAg9P7zLu6Pg1WYQSfZR7iDS7DLmOgDupeNOa68+RxzVc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8996908},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"958f58c7281f2b216956cce68817d02fcbb9de70","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.41_1783586275162_0.08118287229331544","host":"s3://npm-registry-packages-npm-production"}},"1.1.42":{"name":"@camstack/addon-pipeline","version":"1.1.42","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.42","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"6f9ee87e29b77388f3bdd3ca9565b118d203206f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.42.tgz","fileCount":103,"integrity":"sha512-qyWCGnQThf13QpMJViFfgnbn7SSuKO1NeCLj2+8hexQsGrinrrtk87gjAYXZBnG7wtGAuadn6/GCJiB+gcaw4g==","signatures":[{"sig":"MEUCIQDSko5TUHPqSM5glY9A6TiniWz3wZ/09bWtsGYDayL6ZwIgA+RbxcmE17xIzszMtyoFsu21xMOXoaU1amHbDEbL6tc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9028665},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0a1b034069e9200fa74d176802dcbf830f2e2de1","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.42_1783593068507_0.33229523866814614","host":"s3://npm-registry-packages-npm-production"}},"1.1.43":{"name":"@camstack/addon-pipeline","version":"1.1.43","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.43","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"79bcdb4a12052e136cbacbad49ff050f80125ca3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.43.tgz","fileCount":103,"integrity":"sha512-xqvpHoWP7EcYHejC4jDBgZLaEFV4zzlTfWltXKKGKlPVRIIEMD7bHEsgmKmMkL2VEaLq3pR6dMeHDlKBxFK/SA==","signatures":[{"sig":"MEUCIFPr6WTt15CZUp7DLcIf4t1Fuhs/2nQ0/TezWzZEmYyKAiEA+YPH5yxhOd9JsDzK8N6rE2+dyRdC2xUv4ZlMhvqF80w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9032363},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"dced557070d5431492cb20455a6de1b7749b2899","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"hub-only","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.43_1783597990183_0.7707432793298745","host":"s3://npm-registry-packages-npm-production"}},"1.1.44":{"name":"@camstack/addon-pipeline","version":"1.1.44","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.44","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f294ff2635e28708368709062e39f658ed5670b9","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.44.tgz","fileCount":104,"integrity":"sha512-5rYJvPA8w8sMredPa+ydse6Bs5q+JjWPLoTGyY9HmjxxN0Ofi9CAaUIcWLjWIsEKldj49YMmWMzq/Jl9wuMlJw==","signatures":[{"sig":"MEQCICigGj4PdXTfPTQXH2A+Hxec1Fyg7s+JZDkrgG7smdnJAiArRNGWS1veBUEfgGgy0akrkA5quDny2p5BVE/hWK/QzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9149541},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"65611201ff0437828ccc75fb3a6f318207e733ba","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.44_1783719302389_0.5119928473230684","host":"s3://npm-registry-packages-npm-production"}},"1.1.45":{"name":"@camstack/addon-pipeline","version":"1.1.45","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.45","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"45041df84753a0c9b947781a583c87b020633599","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.45.tgz","fileCount":104,"integrity":"sha512-bFdv8OMFWDx7rnbX7TJiX4K//be3st0IWm3xsVEF43vClsKxafpAkIH3M3448w4q6lmjsdskoDoDHaE+G9JTxQ==","signatures":[{"sig":"MEYCIQDZYN5Of1pepF46Tgc1Fn07nbztQwfUZ4DJixI7R7ifIAIhAJ2yDOgfi3hdjvO0hwEUowbLeddi6bDVs2IpDIVs6lrn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9172733},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"91ea861482b16de9f27a1717cfa723f735c5b43b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.45_1783768888547_0.2788232612258703","host":"s3://npm-registry-packages-npm-production"}},"1.1.46":{"name":"@camstack/addon-pipeline","version":"1.1.46","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.46","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"eea80faaa0d90cb66510d477c06037f62a42111f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.46.tgz","fileCount":104,"integrity":"sha512-gv5Uy5SvNUbD52F9LJrLCro1KQQ/NYyPOVm1KNAryqU0uWwzLu+Rz/W/OWOfgZKx5oM+KFkdAphIkKsYgoHeJg==","signatures":[{"sig":"MEUCIEeYNQwNp/j7SU0wY6LM36zwGhYFXKLjzKDZa02jQ8dTAiEArD4yRnDzaYHXYTChjfROn50KyHnDmYODcKp0f3Pxkmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9163542},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"448a0a1d8425f9fcaecce0ae1dc21bbb34b4dde1","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.46_1783865078048_0.6377141244920028","host":"s3://npm-registry-packages-npm-production"}},"1.1.47":{"name":"@camstack/addon-pipeline","version":"1.1.47","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.47","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"dfd4c4d5e7399dc57b07b3271cab10f4a5715289","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.47.tgz","fileCount":104,"integrity":"sha512-945rT9EeTqBRO4fyFOI+ysfUsxOwHg9iCncA/A/sldlVsp/tPZfE1KKrYA4e41okQX+LyS+NKuUhThunVH46cw==","signatures":[{"sig":"MEQCIDiqfyS3SQZLaEXTgFOl55xa1VstgU2ed7CtQ0lZd/tEAiBKKisW1Oas7XoCJXdFazP+jX5coIK5jA5kUwlJhVdKbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9190887},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8bcc34b6253e5de571cb4ebb344eedc4b2eae570","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.47_1783886790189_0.3146191826979856","host":"s3://npm-registry-packages-npm-production"}},"1.1.48":{"name":"@camstack/addon-pipeline","version":"1.1.48","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.48","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a1821f0a1d34cb2a8544a452eea7f10b98fc64ef","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.48.tgz","fileCount":104,"integrity":"sha512-x0YXbOkY6w0zkWu3tdeWt6bZcB5GHQJs+wtsevdwog4YQ7nW12jetUk0IGtnjHF2k8a7PCPWJotOvk2wTup5Iw==","signatures":[{"sig":"MEUCIQDtLgig7VLixjzyN0/aabY3+ngabJLtr7W8ef+HbmvF0AIgfWrCmFcaPn54+CxUf/glFGUbN2AiahZ9PcQjaWCG9KI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9190887},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0a27a9624a144495155cefbc63639ddbcb9efa39","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.48_1783928087310_0.5263429559770805","host":"s3://npm-registry-packages-npm-production"}},"1.1.49":{"name":"@camstack/addon-pipeline","version":"1.1.49","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.49","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"eaa2e71004f03a53bcada8a376f31898daf9ee30","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.49.tgz","fileCount":104,"integrity":"sha512-98yQGOzLOxkXKrWiubm+wwSY5QWU75PTmNV8dV8b0IJJEBNp8rJFIk/9GwDjqu6GNm0wyw1BjOVxwsEQpHZhJw==","signatures":[{"sig":"MEUCIQCdBj15tILbTP4ihjE/M+pKrEtPWRgVPGwlT3STH/QW3gIgYKPeIu9Z72jwxfmvhvhxKpMk+gFz4Tuu92QQwUGiywk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9203262},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1bf34f60b914f4c076c0a2f9a49a9f56f291773b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.49_1783941175614_0.3218927579923685","host":"s3://npm-registry-packages-npm-production"}},"1.1.50":{"name":"@camstack/addon-pipeline","version":"1.1.50","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.50","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"17f718d844678b40fa1a70ba28c86d6ef325caa2","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.50.tgz","fileCount":104,"integrity":"sha512-24p/kmMxjahx0zz85fAEnQc6I3LzZQnJqHC7esHUSp/Lvbwprk+iKywrnLHcSiJj6FVClwhIcgmCsZVM9BbBdQ==","signatures":[{"sig":"MEQCIAm6ssxxjFSU8474oLo4pHag9Gh1QJczArlOCJ0TjWy+AiBEBTm77OYUyADOoZvcN7jGI00V6gTtANOOP6I2u7SaUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9207257},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e756d4f3081cb7e5f61703092a30ad038d8c45b6","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.50_1783942248611_0.5572806266153367","host":"s3://npm-registry-packages-npm-production"}},"1.1.51":{"name":"@camstack/addon-pipeline","version":"1.1.51","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.51","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5f528aa7a2b8527ceae48fd31050d34638cb840e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.51.tgz","fileCount":104,"integrity":"sha512-RLNkKh/EDmq3nxeXAJVrTRhTJd5V30y4wP0PmyoVoOX7EfQFI88Srad3Nk1RsI0PHfZBeAyikRF7LQz/etZPDg==","signatures":[{"sig":"MEQCIEz82WFh1an5SJvQavRkzxWqUfFZ2sKMjP99IX8GSaLKAiAskne8Rq2ZIBWTgY1T38lcmksKPYvYFpkmZwj+TWvOEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9212718},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"621818b22b9ffb640063f80dc8c5e7e60f02da28","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.51_1783947948817_0.040151863838766344","host":"s3://npm-registry-packages-npm-production"}},"1.1.52":{"name":"@camstack/addon-pipeline","version":"1.1.52","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.52","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"34d704e646061beee5bfb3df6356e47eb0f44ff7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.52.tgz","fileCount":104,"integrity":"sha512-6Hur/D3DLovWCNM5eqAWmRnYiPC7Zicn/01w/Av2MgpTtVm5apNZaJNqcaZWD+n2Vxq66nbKcdlhNxlS/MB7wA==","signatures":[{"sig":"MEQCIEolHYpWspNvkyarxgsrUI9EUIl1ZGHzd1PbEHJexfZnAiBAJ0fTLB4XA//Rqmnf7iwncJsRhLTjVThQZlk/DVtNjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9217613},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8842d9fffd785adb2dba8f058294ef69a98f7590","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.52_1783975427015_0.7435093828611692","host":"s3://npm-registry-packages-npm-production"}},"1.1.53":{"name":"@camstack/addon-pipeline","version":"1.1.53","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.53","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"4003a9ff5b2ebd3a570c93ffeae2e5cc03b3b851","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.53.tgz","fileCount":105,"integrity":"sha512-Oet2MRqXQaH8UWs1tOnYsYWnQ/eUnne2RIsRX9LTfC/fIV6H5Sm/PZ9SqD99IWoqzLhRLD1Zy0TVJWAYCpO88g==","signatures":[{"sig":"MEYCIQCif9hIc9EAWPjKN/q8hpGbaTPI14TLg3Fhg9x0dbO7JQIhAMquvs2Aul/+A1647mt81ebH8jEMtNUVTkj9acUzQCol","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9225357},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"df67c9a5da607a52ad6d12dbb370e439ef22930e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.53_1784009415923_0.19203003140834762","host":"s3://npm-registry-packages-npm-production"}},"1.1.54":{"name":"@camstack/addon-pipeline","version":"1.1.54","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.54","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"63ecb4725fcc3771aed78f86242976dc9b469dd4","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.54.tgz","fileCount":105,"integrity":"sha512-8BLDwiwVKryEvmpbAAsOhec+973vaWZlvmALECYai3/5AL8+T58krcVNdOvg3gCUEO7yTQVB9YjyGjmgsXxghQ==","signatures":[{"sig":"MEUCIQC1BergOqjhmHaE4O/a+UsEbaWSZoTD0c5ZJEC65E/nUwIgb8JEHSIz88YXliuoFJMB7LfaiFdAwiuJXSvkbiEZcJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9280764},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"49c7fe9c7e1aef69226a8b36c5398fb63131b561","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.54_1784022772145_0.0830966938418305","host":"s3://npm-registry-packages-npm-production"}},"1.1.55":{"name":"@camstack/addon-pipeline","version":"1.1.55","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.55","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"609c81804d3f9f9a65586916575ab628b0fae0dc","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.55.tgz","fileCount":107,"integrity":"sha512-JTtG1mBQWqTafVlG9+1bzmWPtSj3Ea7skXmpjPZrA7xZbLayr1RxGsAktd78QGXU7F0HgHL8t2mzQZ0yPjPlvA==","signatures":[{"sig":"MEUCIQD7orIOXeWzECUbn6uhuhudDg+74Tc/BAto+HbPp0aPOAIgUqP6Y/6S57htnmHmNr8dzCmDXArppXxd/F2gg8MWHog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9371964},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5472a1b3743e8835c3addf8aacd9faed143c7254","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.55_1784057034204_0.5476963293828336","host":"s3://npm-registry-packages-npm-production"}},"1.1.56":{"name":"@camstack/addon-pipeline","version":"1.1.56","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.56","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b6c814b94c961466b6cba21f1759bc70aa461a0f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.56.tgz","fileCount":107,"integrity":"sha512-9cbVN+PD8UYsDL54txRw79LGwBh7TElxzZezb7JJLsWTSWlsl/t/LdzCdhP0hM4X3zh3LiGcMEZDCYZSYbzg4A==","signatures":[{"sig":"MEYCIQDuPywcs+KuHWC14Wly98/nwOcOILh7ktqJHyqOLlHGeAIhAMDXU8LvK8nK6eRg9DsnwC/M2Q5ieu5IoU9V/4sz2gZ+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9462883},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e7b9b29b71bb71d2f7d6d91a0c5be71f8f2324da","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/shm-ring":"*","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.56_1784141023559_0.07916697188904043","host":"s3://npm-registry-packages-npm-production"}},"1.1.57":{"name":"@camstack/addon-pipeline","version":"1.1.57","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.57","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0eea5bec0f383a8a384aaa7b0f654a9267ebf77a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.57.tgz","fileCount":110,"integrity":"sha512-6LhRg33mRfG+Y9hSusyUD0EtyOiuR+4F9mq2JjVAxHcvZFX0c7Nt7FeWuBQflaPPPjdMWzQDZej5vMaIbwBM3g==","signatures":[{"sig":"MEYCIQDNUVxIMKX/YCYJrTPLIH4JeaUNYcpM0OF+MmxMNkRu8gIhAIiAJf0HNVLXPAao+d84+V05zJjoMRipoVgR/dCaPSVq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9448026},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3748d7197da31d6bbf3ad98563c42903908cca21","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.57_1784207108209_0.17204138268793367","host":"s3://npm-registry-packages-npm-production"}},"1.1.58":{"name":"@camstack/addon-pipeline","version":"1.1.58","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.58","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b159a44292f091bfa9dbfd67ecb45feddd338889","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.58.tgz","fileCount":110,"integrity":"sha512-iywt+xu+Ji+qPNoffeqlvQhEOxSlqW5nVkzWTPC+x5GYuDcjCrW5Pj6sKmGVANiQsNK7fycsrpsvh4IPGYt88A==","signatures":[{"sig":"MEUCIQDHJg/Yksv9oTJTMMqlFidIZTZBV4xd3iP4IG21M8rWjgIgWl909uRQK+M8zCRdwWS7q6Z/OnqZGZtNTFkiBeO20LM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9459918},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"586063771f2e7b4db8019ed7127e0450610bc2aa","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.58_1784234577712_0.4291181170999596","host":"s3://npm-registry-packages-npm-production"}},"1.1.59":{"name":"@camstack/addon-pipeline","version":"1.1.59","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.59","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0484858c9fe66d0dda890311dd81e5cfc37bae73","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.59.tgz","fileCount":110,"integrity":"sha512-fQ/zSUCwgKs6FzT6iIJFWrr9J5694hg0DdZSZsiY4Z/9D16aFFEIe9FJQIT0nj49R8Qcu55CbqUm5cUGvDJ5wg==","signatures":[{"sig":"MEQCIC4iDjdSkZkJspLu0BGqAKmCjo6kl/VUoMl9HKahtX4qAiAeFLOadCGlvjECjaE5lI81ywbbc04GDKkfFtJEeFKgqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9598768},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6fbfcc60d757b0bb0d21c36c5e0d0aab1a333109","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.59_1784289175057_0.32626355584926725","host":"s3://npm-registry-packages-npm-production"}},"1.1.60":{"name":"@camstack/addon-pipeline","version":"1.1.60","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.60","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"4418f4184d14965ab6d3db7afdcc686849af706e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.60.tgz","fileCount":110,"integrity":"sha512-qEHxwFxSgb0qZMJtv5vXsDGhGwA5ed3GG4c9ldAbX8Sq9bq4MZeADR7CMVvHh/j1RdysHKwEt+MVKpZ1zPj2Jg==","signatures":[{"sig":"MEQCIHzxEiw3hBh2HkucdgC50egpJaygbAXWPcmclhbYQ/RHAiBiK1VAz/WflpLzTgac9gtmbXbZ/wd3qS9TAu+YInXp9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9609522},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a8dea5b1c8de0e01724419aea59c45cf0f43f84b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.60_1784306649179_0.5631735420615309","host":"s3://npm-registry-packages-npm-production"}},"1.1.61":{"name":"@camstack/addon-pipeline","version":"1.1.61","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.61","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b660039f268d917484690218cb786548559cbb50","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.61.tgz","fileCount":110,"integrity":"sha512-qBdoKsNZ+Mb4dxf1qALWnwdEw2lMKwx8rHv6gOL4TaXLDC6wPi21q504DGeH+l6YDK2TBTflGALcP5aM1Up29w==","signatures":[{"sig":"MEQCIGEhaVCWC95I+/XgaMJLO0Lff5OuU2ARN9a+SacZspdmAiB/LD/2pzbrOOPFuTqfI+riESRNQCtzNOYkRflmstThNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9672174},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f2c7330077a5eb5a2943288616ac1bf750eabccb","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.61_1784319253801_0.10569009567606447","host":"s3://npm-registry-packages-npm-production"}},"1.1.62":{"name":"@camstack/addon-pipeline","version":"1.1.62","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.62","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"92101d7ea79ac7b4bd01ca7d74f3ed26c5b73bae","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.62.tgz","fileCount":110,"integrity":"sha512-dTgwiPULNbh799W8dtkPfV8PoqGHA6i56p1KCMsZiGN9QcLuiqP/5WeLllRWJHv0ig17tGLLFu0r9UU5IuJpmg==","signatures":[{"sig":"MEUCIATydaKg937gjddIXtlD0u2xSIt0LUl+yRNKghOyLWsUAiEAkJxqQ6ENvCspnKt0quXbbD+9loHRDRysfqye9M7FUzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9699149},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8a87ac40517d85e08106cef3bde36be9b7341194","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.62_1784324757372_0.5269363045944677","host":"s3://npm-registry-packages-npm-production"}},"1.1.63":{"name":"@camstack/addon-pipeline","version":"1.1.63","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.63","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"9f3dd400bf9ce2c3393780efa024d46232f92b98","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.63.tgz","fileCount":110,"integrity":"sha512-kNybC+ZrnWXaYbm7RiwLom7ftpDkgUG9hw+8tY5bK33h12N62j6r8U13/a5mhJDWOc4eX5wRV8nDPW6mfJ7xlg==","signatures":[{"sig":"MEQCIC1odEX7Wc545MtjGV8qZSOZUL3hslMB0HMny6Uj0fc7AiBXipS7UhD7ZiPB/ruPce0ZkWIpZwxUFrwqJdvIb+s5yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9734761},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ad727fef6a3d10cbe4cde755b2e20eca6ef1b56c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.63_1784343260417_0.17493044258652413","host":"s3://npm-registry-packages-npm-production"}},"1.1.64":{"name":"@camstack/addon-pipeline","version":"1.1.64","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.64","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"59f9275d25b148cf877b2629ffd6f036dda41a3e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.64.tgz","fileCount":110,"integrity":"sha512-reLwOWPQwhI9Y5EiDPzUblmJ1vQVqza8C1FW0FQ+6EB46IDkvZo6iBYa757Hv/ZezMeRSjMxLm4SpxWZ+Br09w==","signatures":[{"sig":"MEUCIAJiSkm/GHXpZ0ktpEjbq3W9kDCAQMBH2GQm40V0jvOKAiEAkLWQhq2KfG05K+O8fir1ouWrE3sB92t2CbFSd94iX8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9734761},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"07b1704436045c3ab170c9f1fb744ad7b0a0b88b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.64_1784346633451_0.14773890692916836","host":"s3://npm-registry-packages-npm-production"}},"1.1.65":{"name":"@camstack/addon-pipeline","version":"1.1.65","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.65","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"2109f87e695bab50d93eb53810027da27084208e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.65.tgz","fileCount":111,"integrity":"sha512-pndTTC4PeKccbNsDC4CGuKYSln/iCgVoxb1qIKPgWR6pcGZoaM3ww/yMPgT63OtMItZHkFgnjI5mrl1PwBWqrw==","signatures":[{"sig":"MEUCIQCakNEN/UZCTal7+OXbAHpRVeeMjd7hGBum5++DmK8axAIgOUTR+LIvlgN+at6zZ3hs0MMOtuXcwCJDuaFgurqE/mI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9752759},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"02b2029181f50352582d845e4761062451bb1d26","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.65_1784368026563_0.7995002699435743","host":"s3://npm-registry-packages-npm-production"}},"1.1.66":{"name":"@camstack/addon-pipeline","version":"1.1.66","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.66","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e75ff15c187d630f32bee7a8d505c076eced1265","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.66.tgz","fileCount":112,"integrity":"sha512-+f8OMXhLA4niDlb+ZRJYZJvmWgbI0JC5m/2sr2PbVdLajSp61KtyyEwDhNEWq0YgwJYXDDv1swCLenBroZ20Mw==","signatures":[{"sig":"MEUCIQDfm3D0rNmEnio86T5q0NkrfltUjqn6czb7sxBbd3QtyAIgK7+lzyJejNLqbweP9r/aQJWbMr0Vc8AoSdKyZtEWJ/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9945572},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a95e163c1c159c1ddbde747050a7f65e900cc2d0","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.66_1784472846463_0.543302814550821","host":"s3://npm-registry-packages-npm-production"}},"1.1.67":{"name":"@camstack/addon-pipeline","version":"1.1.67","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.67","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"307cd1e6d4f3565a06574ba703844896dd2c7252","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.67.tgz","fileCount":113,"integrity":"sha512-8CxHf4DhCYIxwUZmJADEg/31xpyCnAob6arCd08PXVhL/iDQ8G7ngfFm/E/MsEZEjHeQbjdauGLdMRQXvcTTpA==","signatures":[{"sig":"MEYCIQD1ggEiqmY7Xvo/Yk90VcCkpEUUYeHC4DyvYhjT1o0eTwIhAP2mz+6rtCYZVQ32EBeNSKon43/3WPkgOM3z1xXWKDhs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9994768},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6de5366e0d18659d3171856bf4265bbd4558a28f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.67_1784497856958_0.5414781025723037","host":"s3://npm-registry-packages-npm-production"}},"1.1.68":{"name":"@camstack/addon-pipeline","version":"1.1.68","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.68","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"26f6f01355ba1897694883317824ccd76ddaa9d3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.68.tgz","fileCount":113,"integrity":"sha512-m5S/WRmsSw+F7wAKxPxOwQtUEafl8tUm9aomxnU/AgWoImdawG1L0bw5R7Lb+4Bozv6h72uljRG1vKRIiURzsQ==","signatures":[{"sig":"MEQCIDqHJKkfhPCAIi+8qk6wop+f2FtJJexk1PYVfXXDhzr2AiABfMnW2eGbfrsZNCgKa1d8oT6Nor9dpiLLMVBu47LvWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9994768},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c443eb4a327e02dbc0bb2033d7a0004ccdcb82d8","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.68_1784498363018_0.5205342401109376","host":"s3://npm-registry-packages-npm-production"}},"1.1.69":{"name":"@camstack/addon-pipeline","version":"1.1.69","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.69","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"54dc0a608e4e10bbe05b089277d7933e37fa70a5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.69.tgz","fileCount":113,"integrity":"sha512-PMpkTGpojmua1ps1Q/aBhP+rdVoHbu02kA5fNMEFd7eXujbVW4b2rZRRlRXbtKVdEz8s+RojFNJslpjX6QUWcQ==","signatures":[{"sig":"MEQCIEmFApsTRjwcNRWIEQbepYGeMijSj9jLllE1c/mMpPWLAiAko5XB1xW3DlhnHkmmHLnBag1TXtQ2uGf3jT0j0ayYlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10002877},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6278d40ee011a3ce7709e2158883e21bc74640ab","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.69_1784540802736_0.4069355678312241","host":"s3://npm-registry-packages-npm-production"}},"1.1.70":{"name":"@camstack/addon-pipeline","version":"1.1.70","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.70","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"48f250d256b08dd8d94aa850aecace1cdb136d29","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.70.tgz","fileCount":113,"integrity":"sha512-SfnPtw1sLj6oRt/Cu0q3SS1oQaM9jlh1WTKSFUH4CeeT/huU0JLLvqBqy9mxm+mFdWoa6CcoixvBnCdrsbYNcQ==","signatures":[{"sig":"MEUCIQCbyqsR8e0UXHd1txRT4UjpzNHUYTrXPtwirdIUKKUaOgIgUZ3ZeIaOGjcmV49l3eRelsja0tJfwvYTlAOnpkUBejk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10007007},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"01791089f4ba4caa3a537a243c3711bb1d8c956d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.70_1784544151083_0.8605509540849139","host":"s3://npm-registry-packages-npm-production"}},"1.1.71":{"name":"@camstack/addon-pipeline","version":"1.1.71","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.1.71","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"315018f526ed7144d81b0a188c269526213695de","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.1.71.tgz","fileCount":113,"integrity":"sha512-mh+xKGUXNsGdMK1m0KLGv44DPrPavDgud0aUxyDYpkN/ja5MuNDBEUHBz4bPb1rJuxHVujLkB3LmwDQcEbHB3g==","signatures":[{"sig":"MEUCIGd97hqizabt4tdO8O0Ujnadyec8ujrHU9o0wfy+QZgyAiEA01bBlI0QFHOBKjzpATuU6hz9lfYCujUiKbHQOh/dG5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10017993},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"31201dab6ab31c34954acbdb598aa377d7bfdf95","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.1.71_1784583647949_0.9018200719586318","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@camstack/addon-pipeline","version":"1.2.0","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.0","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b21678692e59a071eb44a17c84dbeafc12c05b05","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.0.tgz","fileCount":113,"integrity":"sha512-x9b7nCf6euFU3pujzK9LB4cWfzX4Onjlt9eN3YfzGzhginMVAWlS2lnTN/IMbqB/0A/uiQ/2RNxudPkM3I0O4g==","signatures":[{"sig":"MEYCIQCAlYZwXJH14DsaWN1XM/grqrjyVp69FNiJfhXxCJYGiwIhALfqbeLBfVUSA8QDZxAcl0e3xMuW6/LAKY33SspNS4et","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10017924},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f2b4495784a219d6317970f6eb60d6f41c751c32","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.0_1784636691088_0.5768231634065957","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@camstack/addon-pipeline","version":"1.2.1","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.1","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c805e88cd074a0f9d1a5399c493a65f6a7331ffb","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.1.tgz","fileCount":113,"integrity":"sha512-KO2q5y1qx4LqL3gE8DfbUqpN8vG8syFVkq4KFbvXM1sziFTRFDNXDSysA/dC0VyTkojgL/lf5Xcv3tH0vZpu3Q==","signatures":[{"sig":"MEUCICBHITHtkaX4ePfn4xcL7r0ao/hsgzvvWgnjJTzq2gvOAiEA0/tCTYY7zz+aN0Qwn2iqT/JA0tIBx6PQFOm9Gr1LBHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10022740},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"326b1226f65a79d5ce6a910a385bd884c5699662","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.1_1784648928165_0.4493655488084556","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@camstack/addon-pipeline","version":"1.2.2","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.2","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"cd86dcc5fe596f1e8904fa8191906c2db186ade7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.2.tgz","fileCount":113,"integrity":"sha512-6qS2vtiHw6MZKAoSfi2Z5u48hn3EVOtbjroE9HLxhvOp2oXZ74tfi2NF4PuMqovpJmlLLS+TXZaYqKhD9hzxng==","signatures":[{"sig":"MEUCIQDKd/XrwTRumMhZh/KFbmC+i6N8F/tiNvnMFWIgFMG5jAIgFqHPAtoM6wmJ3C/TWr2mrvnw3vNkV/AWxu3jWhPb4nM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10051627},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3369109f434408712624835620c98815f57f0ef7","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.2_1784659620701_0.7073463478402027","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@camstack/addon-pipeline","version":"1.2.3","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.3","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f154ba6655e1d1317036dec0908536ab12340272","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.3.tgz","fileCount":113,"integrity":"sha512-vlrTtl0svbEoDITzy2e8Dh3cPIKux/BP4qs+t73m9AUlTsBJCVFVLX1+wK2TJyI0z5Vb0i+PBKBKMkqXGkrvGA==","signatures":[{"sig":"MEQCIEktxHg/zwuM1ItRhlYRX0vNcPjPHEJ7OU7bHreqIftdAiBrEVJszW5BsXnha5vdQEu+qKugQB/L7PcwyiF8Zf30fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10051682},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"69e0185bc13698bfdb654be2caa53768730591ce","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.3_1784664080522_0.019377667525737552","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@camstack/addon-pipeline","version":"1.2.4","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.4","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"94ad51c6ea390cfe8b0ab6e95382940ff47b1537","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.4.tgz","fileCount":113,"integrity":"sha512-3hgCc+kJ3SilnnaLj1us//iSf0M+qA6lMGKuplS+gOIkflvZ+ywRR/kVPCtSgASUu6hr6HsFv1bTnydNiFo+/A==","signatures":[{"sig":"MEQCIAyTUFFenzx/7y5LEQ2DYD0E9I3xypyvHvLv7x28FtX4AiAvO4/hI83VDz37NyyRcdxTN7d5Jk1pI1Zfmi030UHUTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10051682},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a12be86d3d75cf5ee458ca80816b386db188141a","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.4_1784677729236_0.29692751512483806","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@camstack/addon-pipeline","version":"1.2.5","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.5","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"69339e523dfe6f3a778335d4a374591302baa772","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.5.tgz","fileCount":113,"integrity":"sha512-jlhX3LSn8wKW2BNQFjHHLy8X1HiFFmA2DtNtt+zWH6A8EPyivAASlpPWdVDDAqImg0NdSBYoqMjea+r6bdIczw==","signatures":[{"sig":"MEUCIAQHLQql2BMruFmRxqENAXM+zoQRSw1JArmJjmqu3wF8AiEA7F1whpJcyLX4SOMzp8q0lnoLkO5WkGuKHGRkvUXQKfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10057384},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a0ad5a219c6ef93faf5cd9abc10c95c369967dfc","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.5_1784709613082_0.6080316179167642","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@camstack/addon-pipeline","version":"1.2.6","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.6","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5706f4d0593fbf8c2a58b5801bb977d16ea2640c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.6.tgz","fileCount":116,"integrity":"sha512-7y1mn7UInnlZmGceQ5QnE81nTyRwFYzQqNTEoEW4hbPLsRlzDOrXZDoXMtaSi5Vvmo7F3EAJ7JlzzfcaHua0uQ==","signatures":[{"sig":"MEYCIQC6C9BM2VjFFFS70LKyeGgSXfpor8zp4e6rLKCI7kHmFQIhAKBfZ1mxixDbUrdgbkMrUP2gENn81LkS/zgQGpf8RztS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10170551},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"208e5330c78aac35b2a78720773b7698cdf6b37e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.6_1784739591523_0.7088982777794066","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@camstack/addon-pipeline","version":"1.2.7","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.7","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"cc2bde194236d78c963d81ec6feb82024030cf7a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.7.tgz","fileCount":116,"integrity":"sha512-x1xhn4icI/FwPxETK6h8/zrDuZO15VrU8vaMdWAccCMgIoB+XFNnoK7tu31faAZMd4YNewx1FOxTTMTUiqHknQ==","signatures":[{"sig":"MEUCIQDaGVXAz9PI0nYnq9SB4/0W9VGY9MeXCmdjDUG/Q2vWXwIgdbBUDk8NqvQaHE8BjbQDY6PhK10rbQ7GhFYAh8a/iFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10197347},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bf2b4e852e07d9757d84a2009d1a44f0a0f82282","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.7_1784779005829_0.0026048646368619366","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@camstack/addon-pipeline","version":"1.2.8","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.8","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"fd46c244d93a7101fcf4f43e47b72093eaa4f4c8","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.8.tgz","fileCount":117,"integrity":"sha512-vOODP04JLne48feDATxFwJt59XBhqacWydLbY/BrfM4thaWD7+ZbNUF+RoaOBJGFkXT2+IRerSUFwDf447E0jw==","signatures":[{"sig":"MEQCIDrfq0DAyOdLjmYiBG2KTnrDBzaG0EvZdhVlD5WmP9ciAiByeRF7BeF/biF0nW4Zf8UvltZudTu6nGhDWS1zq6BtJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10799102},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e53a42004a4ccaeff581df026e3cdc8f1e1aec35","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.8_1785002626155_0.5882888620868558","host":"s3://npm-registry-packages-npm-production"}},"1.2.9":{"name":"@camstack/addon-pipeline","version":"1.2.9","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.9","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5025015de8f4e4f33272604f6be204d70e389b6e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.9.tgz","fileCount":117,"integrity":"sha512-FjZ6R7bphuPR4aXRmwy5RNYufaXILfXD6uf8iaOguk+QpcR3mlp3dazcZU88dnS3E1CmZCjTDhrmVRBZEOECQA==","signatures":[{"sig":"MEUCIA/e36zs8H+WZGu4cC29wEwBUMTPGCjWrH+nmBRZfCfNAiEAyy0TjaA+1KHcAJVmlIMTeS96ypQVSGz+PnzkpI6ILBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10799104},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"da018fc6dd7f20a376692e72acdfd17e20f31846","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.9_1785048003586_0.9702948709173134","host":"s3://npm-registry-packages-npm-production"}},"1.2.10":{"name":"@camstack/addon-pipeline","version":"1.2.10","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.10","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c7f3b54d5df0180c536911bf3c1da4101f7b04e0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.10.tgz","fileCount":117,"integrity":"sha512-09GGuqEy/RvGjD7J/fIA8Rer3xYRrIOg04js0KUh2eHh6MEHSR5s64TyUgypJ6HP4QwWHxQy9gZL2An20xtgew==","signatures":[{"sig":"MEUCIQCQ0wGEuEJ5VVzXngVNmd+7gnDGsMzEfLGsAsZM0urIdwIgOXaJCpHkHHrqEL0HJlxNKyPVjr+fACiJjmwh1qHbmbc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10799141},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"353083c6bd51bb621886851b1746ec31c23a5934","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.10_1785066044858_0.03418731827276944","host":"s3://npm-registry-packages-npm-production"}},"1.2.11":{"name":"@camstack/addon-pipeline","version":"1.2.11","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.11","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a9be14e5d6bec1e9d94b09bd7493326b8d64b30d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.11.tgz","fileCount":117,"integrity":"sha512-qTuRwdyIrfuyS3AiYHDDKFdAPBMEdHRIMeDJCaqOf93Tab0+Il+ZeBJwAHTdxfbX7cnw/iM68W5MwnWwXHWkmg==","signatures":[{"sig":"MEUCIQDeE8cL5nirQ6VClRQfwZzfHGejwIQHzelT1V4ErUjEuwIgCiNM8Oz+NXvuMwFZXFYCXCUUDmfPve8ZLthAmhzJnKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10799143},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ee6ca1daefa36f936fd7f9f2f2f2b3a8ccc45237","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.11_1785066848212_0.39787437815184346","host":"s3://npm-registry-packages-npm-production"}},"1.2.12":{"name":"@camstack/addon-pipeline","version":"1.2.12","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.12","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"75190358c2c941d64d39a6badf0d7fdf1f0b7878","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.12.tgz","fileCount":117,"integrity":"sha512-wwaokrbSKr5EsZ0vmNm1lxz2HtxwAs2bUmi42lrGFjiA4+ZZUkUbcoNbJ2HP/gjlrSYQP3c7rEZkyFpczMF+Kw==","signatures":[{"sig":"MEUCIGH6tovC889H2Hi3TpGot0/XpjL1eGtObJqPJXhVWU2JAiEAosWGjsFK8hrGZ3J38HOxg+QlQ9JAp02E/Ao77sleGXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10816067},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"94b8558c66ed1860f5e8bd20e8bc35bc5b8e6b58","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.12_1785087603040_0.16616164493350194","host":"s3://npm-registry-packages-npm-production"}},"1.2.13":{"name":"@camstack/addon-pipeline","version":"1.2.13","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.13","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"42b5f53150e0688752f340e6e48301ad0c754408","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.13.tgz","fileCount":117,"integrity":"sha512-Abj1xNUzw41HMYEXtsAWPu0rb4NY0+3atxN3bf4xedofKY98mkugfgTcNWBRlUbW3xEp8y14l3P3ucWpgaDpww==","signatures":[{"sig":"MEQCIDa5qUPegUHXyEXSD6JIUmK8aqFOVXlfNDhu8bwXcfhsAiBGlG+Gu6Q0iE1plUmVygMu4R0EvMVFZ579VSbQu5wy7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10887082},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f8b83e067d14fd51c734d26c954fb63596ca56ef","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.13_1785156737816_0.8906351569990618","host":"s3://npm-registry-packages-npm-production"}},"1.2.14":{"name":"@camstack/addon-pipeline","version":"1.2.14","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.14","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a387a34407c5baa611eeb8a3f2d327c01a4ca6d8","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.14.tgz","fileCount":117,"integrity":"sha512-6CBnxwocl8kDEai9SKw7/40TwaLlde+IHQvUusyfTRwIw67DYv+lPo9Wuxq0Q2dW3Yyp1GSli+MzRWZBxscIvw==","signatures":[{"sig":"MEYCIQDl81FpQikOWrN6GgBSasmBZ4Mbq3nFDFpPCSIU5RBo5wIhALiE2D3c5ZOs3WOifjyn9YIK5Ke7stSwFM4+ndLLkoSb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10881257},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"09b810201c49baf42e317151bd4bababe99acb34","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.14_1785191137485_0.9637619169521197","host":"s3://npm-registry-packages-npm-production"}},"1.2.15":{"name":"@camstack/addon-pipeline","version":"1.2.15","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.15","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"53cacb26a3479f9338cc97a3756580814d6bb1ce","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.15.tgz","fileCount":117,"integrity":"sha512-NU9YeZhm4y8Zt2WuEFGbhftAd22NBM0V1xxFWru4kZOGp5M1H3XG8Bxvl62wXsutRRfHUiyNgL9icLAv+iAz0Q==","signatures":[{"sig":"MEQCIFPjh7FdR70Ee0x+2RFfh48XQFgBcFu1uaXG2t3sAeWHAiBgMONlAkVa2U02a7CIBENRfCTfZa2ArdB7BmoS19+ALw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10881257},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2a974e72219145319dde00b332babcc5fc835acf","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.15_1785223644989_0.2007513494117097","host":"s3://npm-registry-packages-npm-production"}},"1.2.16":{"name":"@camstack/addon-pipeline","version":"1.2.16","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.16","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"169f1c58b83fd7f7875f9c21289463e607a9d28d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.16.tgz","fileCount":117,"integrity":"sha512-0Y3BvvuM/I3rEdG9gG9T7nPHs8TG/x0HRseMTQwgSSuQ51nuFbISeEP/qmKepA9n9rA6YTMLgey3PaQ+KMncRw==","signatures":[{"sig":"MEQCIGAwiQCCOpunjQq7yJnAMEuC7H824kIfnqzwSfxtnGtlAiAtYXiK1fjo/Vw2oCk1zgTtcIHf2BZyqDMnnY6pMt2Urg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10881257},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"612ed50a383ba303928d9ca879c0afb6f3e1b419","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.16_1785227773804_0.313115239775575","host":"s3://npm-registry-packages-npm-production"}},"1.2.17":{"name":"@camstack/addon-pipeline","version":"1.2.17","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.17","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f9c2bff91ba94a31c8248123f0ff5b087b26aaec","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.17.tgz","fileCount":117,"integrity":"sha512-tX3slJv0GE1b4Pz+84MLjBbh1fCdl4//SYKErjdVlJ+7nuhqwNCXCC6mZ4xDZ8TnQ8iteER6tTML2YHafzJ4ag==","signatures":[{"sig":"MEUCICdTAkfXOCkvVtYMftns4tB33zhix86MYOlj0IGM0JlkAiEAwrABIDwuWsxgAnbA4RnXlhXVP+mCwbol7j3R9dMY+j0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10881353},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"417ad43c3dfe5bd332270b4d4a6b28345b1bde1c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.17_1785228738395_0.9355802863843825","host":"s3://npm-registry-packages-npm-production"}},"1.2.18":{"name":"@camstack/addon-pipeline","version":"1.2.18","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.18","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8d5ccf1b5168b8daab21be789c30cc2291343f99","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.18.tgz","fileCount":117,"integrity":"sha512-Cn/8kicjoeuyPRpOzPrADhopMvkntZ8HoiTp8vwVRI/nc/fD4pZAB67lbYKPm/qmhRMhhqAbkZsv8MNb6rzpiw==","signatures":[{"sig":"MEUCIFlXR6HJQBpI9bYsLtWadWJ37TUS2/zKk0XPbj11jrxTAiEA4aS+F3m5VX4A7EfoeOPHlVC956G24moUfaaZcpv9n6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10881353},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ee2166f629040fe9e3c48ca5be8da124995f62f3","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.18_1785229618264_0.8376740152712172","host":"s3://npm-registry-packages-npm-production"}},"1.2.19":{"name":"@camstack/addon-pipeline","version":"1.2.19","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.19","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"bc4dff0fb4a4e1d142f3ac931d28fb69f2b9380e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.19.tgz","fileCount":117,"integrity":"sha512-hKE2mMFV+k30PTlgeQIqH0UTP5i8UIObgsK8KgoWEDBpSHckoFYC0a99gCM1Lf0ZuO1mqTnKgOOOCJx5adlT2Q==","signatures":[{"sig":"MEUCIH6eZfXuc3+tMSoG34zjcfbwx97jgXz30qrp6x1DY4YkAiEAys0Y9ztnOj5QMT/94Su0il5LfGpHtHX1csqZrckRguE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10888256},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e286cc7aec690165b8536b65160ffac86f05c2fe","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{}},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.19_1785234007780_0.14104959601739564","host":"s3://npm-registry-packages-npm-production"}},"1.2.27":{"name":"@camstack/addon-pipeline","version":"1.2.27","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.27","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d4397142b32437939d7d8c2326b54c69de0b6a19","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.27.tgz","fileCount":116,"integrity":"sha512-sro3ISn6WvOP5PZBtRkhFQEeThgI2Y2N5Tn8JqFN5ejJ3nEIVOpPkjHQUQGfHdVyUQZ1tfQOlW3MCaL5K4HYtA==","signatures":[{"sig":"MEUCIQDFTpkRjRzMe48BCh/cQYgTpi3uheHDf7k7wEzKpCKtbQIgDkK7WFIVxhYenIIzwERWeqNkuPEyYG6BTC9qBRLW+Yw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11226428},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"564bf4295aabf11d89014be6e0d197a2b97514eb","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.27_1785430834428_0.35912954027680777","host":"s3://npm-registry-packages-npm-production"}},"1.2.28":{"name":"@camstack/addon-pipeline","version":"1.2.28","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.28","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f8ad4bbb9ef3c5ae6a3cc298f4b9ccb63abc45c3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.28.tgz","fileCount":116,"integrity":"sha512-UU+mVWo2QNpIpQjsqYJ+a5KeDLEIw4DLGAwbWXQuxKKFuOf2Gdd3uZNN5Qz+Bv2SfhIVykrDWIYTKnJHeEVxfA==","signatures":[{"sig":"MEUCIF7VHJ20I2QikYzkeOsqc83qUSW3z8IqV7wWBMuZ3WGSAiEAvn3DO1btepCM19ntHxhxGUwYu7ZcXYUcRVKq67T69L4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11231389},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"902d6dec8fe5c3ba21ed756d8b1ab877b31f3e61","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.28_1785438155489_0.10652280945563741","host":"s3://npm-registry-packages-npm-production"}},"1.2.29":{"name":"@camstack/addon-pipeline","version":"1.2.29","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.29","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5ed3f414f3b078f857eb0b8e7b7676ff9fc478b5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.29.tgz","fileCount":116,"integrity":"sha512-Rhfw6anLvxaUN0M1V82Zd07k9bl/tjY7oPdl788+SEMVycizqoMOfgBMxE3GWCOWSNp41aHMJxIcMjJME2GRvA==","signatures":[{"sig":"MEYCIQDxxGaRj5NrvOrRB7IBpBRvmW4dPCztj4zc9hEYqHHWJwIhANMJnns9f4r9l2OZeDFkFpuuwUXzgpyVFzSBVl0KDPy7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11239963},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8e17513c16462319a78b9e3b3562efd231133923","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.29_1785486618316_0.7928194735004293","host":"s3://npm-registry-packages-npm-production"}},"1.2.31":{"name":"@camstack/addon-pipeline","version":"1.2.31","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.31","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"39ef26b64abdff369855e58e382123ba53e2e8db","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.31.tgz","fileCount":116,"integrity":"sha512-pKX4EbN5br66wlNDBjbuBLJP8YM+95krCFfgVJ+ujnZml2yqOYxJP8D6dfK8AUgVwIu1dbbDAtuAUboFEbIJRA==","signatures":[{"sig":"MEUCIQCULGuXqlrEsxgn+Pdb9j+K0J16PNzNSiV1E19iPcG7DQIgPx3sWVObwhTIK4kd2TREDN+yWYucU15BgrsirKmtzaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11281871},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"90062c209825201b0ac41e6e6e8747331fef57e9","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.31_1785577225198_0.8105125171173067","host":"s3://npm-registry-packages-npm-production"}},"1.2.36":{"name":"@camstack/addon-pipeline","version":"1.2.36","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.36","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"651db484cfaac0503b264f74360c5334b75ecd3e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.36.tgz","fileCount":116,"integrity":"sha512-3uBzb6RgXli5eWFv84xNXRqYYQCCVTjSaAGzuBYi285BUSMnIoOatVend+RomCUWUAMN/puIJk8QpQzjch1KjA==","signatures":[{"sig":"MEUCIQC0OEssqpL+nxA1NQ6F250Wqr8afBfMTegXhQVk+RC/jwIgIMgS9Kuu0gYcwLjPTT2bOlD7HjwxdSU/SJig7P4DJik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11280061},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"661c4d173d0260ccc8c1afa83e34db86f394d3d8","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.36_1785628117313_0.03187758188774659","host":"s3://npm-registry-packages-npm-production"}},"1.2.37":{"name":"@camstack/addon-pipeline","version":"1.2.37","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.37","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d3f8b1ecd79ab579c8322763aa0cb483c0f39e5e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.37.tgz","fileCount":171,"integrity":"sha512-KK9xBFuqRgXw3Tm0BfBGdcwq1Odms8cuJyK/+NtWpTNUuPpGwr5IkuK9PvgSxkB/wDynNSQaxzervRkPkEAELg==","signatures":[{"sig":"MEYCIQCrH8OhPtUkv3QkKE2njUWpiX44Q2r7L644I6gox0XD0gIhAKtWgxP88z13UKbXBbJRQxqLVYoU03VQeqe9QtOg2+HP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11954360},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"17c4963e1c31c10a294f18ceb9dc1b969b83075d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.37_1785655426132_0.23959288344989238","host":"s3://npm-registry-packages-npm-production"}},"1.2.38":{"name":"@camstack/addon-pipeline","version":"1.2.38","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.38","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a52c597a3d93669094f9e838f55f77488ef2934c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.38.tgz","fileCount":171,"integrity":"sha512-3deYgZA41xAGXCy9nTaLx/SoTOMBc90dDOohmNjLUJ3uP0HVTMlI2EDqAK38T4i26a9rFBlPCY1DS1ZoNYeabQ==","signatures":[{"sig":"MEYCIQCJ10XQdbliSgFCKpnLG9QhiiyXX6trGOg/Q8Q9qa4BBQIhAPAj1QP3oj3AQveSPNpXzVFcyEkIZLixRKsN9n7LOPgt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11954360},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4c51fb60093e7f723fef256a08b953c1931cd752","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"CamStack Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.38_1785656052599_0.11857911027086221","host":"s3://npm-registry-packages-npm-production"}},"1.2.39":{"name":"@camstack/addon-pipeline","version":"1.2.39","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.39","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"7d1b2eb99881b81bff965f22a82f2eca28a83b3c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.39.tgz","fileCount":118,"integrity":"sha512-1V8cqp40XTXZ+dh8C2V6TDIt/8cbaSCORJbUEPIDwgyaHdUWUHH1fK9gGE0gsENyapErgdwIoIQEpjIPV337Sw==","signatures":[{"sig":"MEYCIQDyVBjSXA7uHTZq42dEJLeSrHKi7TOhQDJsClgBR7pvTgIhALYiY7XzztVld8+UwSu9Dgee36olIXSmHMt1hYAkSdze","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11263592},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7e6316e4333b4ed17cf255248ff7789bfe8f1ff1","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.39_1785775728006_0.3608179327119032","host":"s3://npm-registry-packages-npm-production"}},"1.2.40":{"name":"@camstack/addon-pipeline","version":"1.2.40","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.40","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a18737167959c036fa6513ac9842db410dd44cf6","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.40.tgz","fileCount":118,"integrity":"sha512-2MPJAmAWDbs4V/p2qxcB9Fd5lUVlb76eegjuznE1D5p93Oan9Yv/SOpPfOJt0wUZIg63V3Kq/jJ/fzqjcGY9Bg==","signatures":[{"sig":"MEUCIQDcnRHmj7ICr+aYBT9qqxKxxrTyiHO1ocoVCgXzgYmuYgIgA7FzJH5KMfzIUcRhTsjVmz5yu28MlVd4wS5yrUZyPmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11285181},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"552eca5ff8824443eed9335fd718a0d2261804fa","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.40_1785832920524_0.9830071718189859","host":"s3://npm-registry-packages-npm-production"}},"1.2.41":{"name":"@camstack/addon-pipeline","version":"1.2.41","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.41","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"451043601d30514f8bcbe810b4aee43529df10c3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.41.tgz","fileCount":118,"integrity":"sha512-gRGl/EvsDydCUtfxDffADE4hyrhNy0rabhcyicr6lBg26NHZHJfikbUTRf7A5KeDwe65FQOZBv4syqj9EtiXoQ==","signatures":[{"sig":"MEYCIQDPNjGx05JUh8ohF/E7E2dEEuZLXI1FJqUohiAaHOfrAgIhANS2s5brCCTViPgRjv0OfHP5IAC9QS8FL4wCys7Znqbi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11313370},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e407ad8ee9dd865882b34f504687ef4ccd8aecf2","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.41_1785942070774_0.4943843068470859","host":"s3://npm-registry-packages-npm-production"}},"1.2.42":{"name":"@camstack/addon-pipeline","version":"1.2.42","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.42","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0ef000fee8bf36d6ba0e3ae17992358d7a38b588","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.42.tgz","fileCount":118,"integrity":"sha512-2tnOIW4aD98M1KVf9y6QGY6nRAJgxFcNe3DEueZWkuqIMQkbDFMhtL3+wmL+InxJVGT61duZU81ZsJvkleA8bg==","signatures":[{"sig":"MEUCIQCB3YiUZ57ds6uS805qyj0Bdc6oCyWfsZ+22eObO9OkBQIgDG7O195hbFwAsdLFeCgkql4gVbzoog6LF2Vth8Q9rmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11389324},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a65718ffc45df0419d282d199a92bf09363d1040","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.42_1786035172740_0.3935144843356515","host":"s3://npm-registry-packages-npm-production"}},"1.2.43":{"name":"@camstack/addon-pipeline","version":"1.2.43","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.43","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"29dfe1722f66ef64a6fc959c0077e4404ed6934f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.43.tgz","fileCount":118,"integrity":"sha512-6WcZE4+0yLvqbjx4VAqii94id/erzrCpmIjFYLqR6GRuzGn/B3M3Rq+sdEHJJsxodhhSTZpCe0lzr0Ia9aJEEQ==","signatures":[{"sig":"MEUCICB07EzKstObNdlMUgivD8WJXKXdSt2SZwdkqefox1sJAiEA/WndeghYiwGxmVX3QO+WYXYCSGk0rXLdBu6ibsbptpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11506965},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"72eabb899a2f0983ba264c3a9ee9e8d683101035","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.43_1786056423160_0.3738709366781099","host":"s3://npm-registry-packages-npm-production"}},"1.2.44":{"name":"@camstack/addon-pipeline","version":"1.2.44","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.44","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5d55e81513379ddfc353e3d4d98cbb2d787061aa","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.44.tgz","fileCount":118,"integrity":"sha512-eH4YUeVV9Ml2uEOW2PtozLnN2OBclkryMb3ynM812oSv5t3N/Ajvmv77bWHQBUAZspybsDKOdvM60b/nehF00Q==","signatures":[{"sig":"MEYCIQD12xCxj4rmpTf5WuGuRCnPA5Fqj3FZ3D24xjZqyFUsmQIhAJkRunQenjS+RmsKEDw72S8Nl6ZmTOlKQ4lt7C5llVV+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11848652},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"86248a80bd28cd01bb9c84cb826632b6bd879306","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.44_1786128437639_0.5661761021838894","host":"s3://npm-registry-packages-npm-production"}},"1.2.45":{"name":"@camstack/addon-pipeline","version":"1.2.45","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.45","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"3f535b6e2ab1bf3a49aa6d89901b41b6be98bec3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.45.tgz","fileCount":120,"integrity":"sha512-WrlFJjoxCvGOjTNc/zkevSx58iazt6St44RMQ131s127xi3xm3CBRNKCEh8etmCD2nnMMbYLcUc8OokSE8TyGA==","signatures":[{"sig":"MEUCIDXnLF29+Hnl0iHGxW/tCRSBjFGRAg7wpd06YnTmHwpqAiEAqwMWJzT5u8478W+QSOupFQU1W3RgWwRhDl/IVUutpZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11937289},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a60a2018664e9b2a2672ebe7198619260c89b5ea","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.45_1786140518690_0.38243664626895524","host":"s3://npm-registry-packages-npm-production"}},"1.2.46":{"name":"@camstack/addon-pipeline","version":"1.2.46","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.46","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"3b52a2a210bbb983c51474a7f3bf0eb53e61eceb","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.46.tgz","fileCount":120,"integrity":"sha512-Cu4slPKdrBiyuApFGtk0TZMopRVAABM4K9wepPxgidS35ThQPvBQ2/pdvbsh3zvFkYQDzMzaGYRR3tTe6LDhCw==","signatures":[{"sig":"MEYCIQCzEhjZ6zJVqpH50gxuQ/oVeUN/rqYfgnKrliSgfVRaLQIhAJGHLSNCbLIpqYE+dyH03tMH1nRm2gHtR+TAQcZQ/dL2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11997782},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"484b15a1c18c0e11ebf67af12ef46a9d257715c7","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.46_1786153747817_0.2663231516031084","host":"s3://npm-registry-packages-npm-production"}},"1.2.47":{"name":"@camstack/addon-pipeline","version":"1.2.47","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.47","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0bbde33a4c05ccca43d0cdb0468850fa0e04db4f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.47.tgz","fileCount":120,"integrity":"sha512-tiBHro6idM/9hlQT9EAMYjzMCViM0RYJXMDQDXouuxTiwMjvbUSQXDhww3wvM+ZcL62J6W4/5fiKSxzLcJ679g==","signatures":[{"sig":"MEQCIEMVHOd5FGck8m32+5CseNolOsLH7s/VETGAh84MZnI8AiAFERHrRoP3XlfK0422FMg7jaRBQm8WUqx5gKBjLKgu0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12043959},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c38da7bffb1a901067f80cfb49031481040e00d6","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.47_1786180338146_0.3806695984322215","host":"s3://npm-registry-packages-npm-production"}},"1.2.48":{"name":"@camstack/addon-pipeline","version":"1.2.48","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.48","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c91dfd10828d53ae1497bd1d8c59569e87cb13e2","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.48.tgz","fileCount":120,"integrity":"sha512-WuUrA+2dsREzvZDj+to0moK6HJvcacuXB0qotvgy6q8Gwv7OBMDqqffEW/MZNeiWkePIlQrbPkfJ0AVJPBwpGw==","signatures":[{"sig":"MEUCIA43WPQByOYevkxdPsldyf3/agX006gmLCKof9NrUicoAiEA3/SvCHAu+4oIHc6/7DVv9SvFVqQ4vQLORO0CT3N2nEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12070700},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0080f6016a8cc5a01dd1bd96212a870b80988868","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.48_1786210646796_0.2445973987417671","host":"s3://npm-registry-packages-npm-production"}},"1.2.49":{"name":"@camstack/addon-pipeline","version":"1.2.49","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.49","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"91859404a4a410849ccee1aa76c9bd19d3085cbe","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.49.tgz","fileCount":120,"integrity":"sha512-MK83g86FDVYVLw6IHqVZVP+tMTIo64RWv5EN82jOjxLVmc6Pig0fBRbwqtm/hLOvaRHaCuuq7X7Dqj0ShE8i4A==","signatures":[{"sig":"MEUCIQCysNqeka1alhZyUeadjLJF/Y9MpaW918GckZZvlwyChAIgPrGKfPfq+2cOvq6h37XH9AADNJd6s0KUPjZgpeXa7SI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12109330},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"07013ac14abdf08182b039fa0a9e5adca0c1c744","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.49_1786225049115_0.6624817055272281","host":"s3://npm-registry-packages-npm-production"}},"1.2.50":{"name":"@camstack/addon-pipeline","version":"1.2.50","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.50","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"96761ffb541f7d020ac855e59efaf6ac9f5c4d6f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.50.tgz","fileCount":120,"integrity":"sha512-DLpQo8zsbtrbRgzbs7wCMidis2d+QvlPxzMmFm6oP4lyWt99TM69tNrOmRHWGHqFmWNyYQzvjnrnR3sLnPcLiQ==","signatures":[{"sig":"MEUCICqs99/MopqtA6XK5bpNnrg/iHKSXB2YD5xEsFdrUnd9AiEAgFbTYq3g6/IGxsXlS+8NZDg5JFpySS/RVY+tW9tB4G0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12118933},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"de8c7decd83d5f50d0f415d2daea6a4e8c4cfed3","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.50_1786229277947_0.857011023063958","host":"s3://npm-registry-packages-npm-production"}},"1.2.51":{"name":"@camstack/addon-pipeline","version":"1.2.51","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.51","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"85cb78f370154e29f2684881cc950e7dd16aef68","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.51.tgz","fileCount":120,"integrity":"sha512-O4+W0Thz1EDz130JVFXu9I3rhg0hnaYy+whY6ozrjIoXH4/4ESzQPymYDngnF9iDa6wsETh424/oiIUt8q3jFA==","signatures":[{"sig":"MEUCICbkjWvcRQcdFqGgjgz53BkSwgNTlxa82xd63ey1XVREAiEA/P0zGDDINUFtkVNrRtyEU86Ud8wdKjpeCyXNz6Pf1qE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12129804},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8c346d390609526c8709d6719b7a3adb216f1fe9","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.51_1786230684989_0.1426875064397337","host":"s3://npm-registry-packages-npm-production"}},"1.2.52":{"name":"@camstack/addon-pipeline","version":"1.2.52","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.52","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c7e447344c09500199281d1e839eaef0a89f460b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.52.tgz","fileCount":120,"integrity":"sha512-BnUnTWuhU2YDc1IOun2yKk1kJ+VVWo7cbOUfcKhpCcJx+Nq+5gcwNV9ck8jWLaeF7Xh7egF189vJ2yTuCGKNhA==","signatures":[{"sig":"MEUCIG1iWGAXw8ZMUa5IdX1JZX+aJUbg0EAeaZ8ZKdZ5zdc4AiEA4nsBpQIPF0//D9nV6emVXq3R7wPwkxIuna0yoq5EiQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12153347},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a8fef547e15d25cbd5327ecaf3fcc0a210ff843e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.52_1786237865172_0.7698615645750033","host":"s3://npm-registry-packages-npm-production"}},"1.2.53":{"name":"@camstack/addon-pipeline","version":"1.2.53","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.53","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"fbfcbb553965b24d77ca3a96921fde60e7ade6db","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.53.tgz","fileCount":120,"integrity":"sha512-OcBv5z1VEJKaHJd7+zkVw/tYECPD8ObvHdEBbjLMogWHd+piKTZwCmrXFwmvTfVJ8CBMVNLAysX5yqoYEsNlfw==","signatures":[{"sig":"MEYCIQDRTZ5mpFhBFms+nRL2KFQ5KJM1HD/KT+ETdMVV3Lca5QIhAM4R/A2/pfS+V0nfOcU4Wfxa/tzae4YvPD4xOf5dnaAe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12195478},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"78152f3b7b10b03032440768f2ccc5d93675c1fc","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.53_1786349691864_0.9792564231462297","host":"s3://npm-registry-packages-npm-production"}},"1.2.54":{"name":"@camstack/addon-pipeline","version":"1.2.54","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.54","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"4bdc5e90ecac0e8e17726b52e931e56bb5c8a633","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.54.tgz","fileCount":120,"integrity":"sha512-QsZBlhfnx+EI2ZM+3j7eCY5MGX+rfKLeTNF3Zn2YBu8D8QU9RN8WJzs7ZndqwVIyTo1It1ONZ+z3PRT+x4+ZIQ==","signatures":[{"sig":"MEUCID7MKAhuh/R3qHAwbH+68/3kYD//UEcQ1x2IleN/8R6oAiEAoqf3nnKkuy6S6evAv1thILWxeDLJcKt4gvKZMfCvJyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12196663},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2700bb4ba9753039739a8322142e5ab4c8cd42a8","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.54_1786356573508_0.21594234123606504","host":"s3://npm-registry-packages-npm-production"}},"1.2.57":{"name":"@camstack/addon-pipeline","version":"1.2.57","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.57","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f70f0a8a19cf202e91fdf7dc1bf1939d99d2cced","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.57.tgz","fileCount":120,"integrity":"sha512-3WhYP6552RiXpoJkFN/uCTnrt5BL17G8je3zSf+2pFmO+YYj6l47nxhAbQ2y+/+vx+hw/TWrH2Bih9E+7rHCjQ==","signatures":[{"sig":"MEYCIQCJYcrUQZppld5Q8qo0HDSz3QSiNW1b4aYFZ3VMR2dbYAIhAO//GD6f1UmqkX3ZbVcdSXAkktwgamNlPw7ufb8xyr/x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12207838},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"94c5e0ea2843a4b7169dce63505c59806e298fe1","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.57_1786365722705_0.8044862111080904","host":"s3://npm-registry-packages-npm-production"}},"1.2.58":{"name":"@camstack/addon-pipeline","version":"1.2.58","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.58","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"eb44d648e543d69ecce17e46df3f242cc461d73c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.58.tgz","fileCount":120,"integrity":"sha512-ENaotMdsTN69xvtlkZDhob22XPXHQxERd+5Cf+N6JjfdLoEJol1vpHYP03vfRzvhrDIuhAnm+K0zaONcQfSbpg==","signatures":[{"sig":"MEUCIQDRDRLwVljaKr7hVK5ZEFgaC1P12Yc9kbCFYT8SKtZqtQIgG/O3vo1r4zldH4n95bGgZ7XDUlhrm9Mn6njQlhT6y9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12208910},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"80e8e28a6c7f6296fd96e2988fb7274927931756","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.58_1786369797942_0.3904102219969543","host":"s3://npm-registry-packages-npm-production"}},"1.2.59":{"name":"@camstack/addon-pipeline","version":"1.2.59","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.59","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a0e64c901786bc65bef1fbb67f8a2fae35355faf","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.59.tgz","fileCount":120,"integrity":"sha512-eW07Q1mCpY00NkyvwSW+k1/rCTFnCbZmQ7G9hNRDwxLHkCx//QihHHG7o79oPb21TC+pg0EU/E5mE8tEU1PY4Q==","signatures":[{"sig":"MEUCIHLQ0i1vCagc1ATRQOIU0iHUj3CvmpIUnCkFFeZJ0hqLAiEAsxETOL8/jM+bS0jab31AOOysF7NVbgrkmT1kY1S6bRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12211195},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b4f51e476ac065be637b176e714ff1d987e86bbf","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.59_1786373904697_0.8742429893609334","host":"s3://npm-registry-packages-npm-production"}},"1.2.60":{"name":"@camstack/addon-pipeline","version":"1.2.60","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.60","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0334840f76ee59ec9b9456ffdca7dcfcc5c58bc1","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.60.tgz","fileCount":120,"integrity":"sha512-wiw8Y0lUB2iGk5N8XwNbz0gr0oHw2J1XXuYCCed383h66XzzhoryN0E1WcpSdTidjCuVvqf6Thn4yHKtEUuruA==","signatures":[{"sig":"MEUCIQDIutsF6pqifmBU84ZXp4kROYnmnb3QdF6HVycMz4ZuUQIgecjhibdPcAFf0IT+4gUU941rBiXdJ18beDJaO38ItNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12212357},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"31a6a89bac4bb432d1796dabe80ea65fdc28284b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts && npm run build:embed","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:embed":"vite build -c embed/vite.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts","typecheck:embed":"tsc --noEmit -p embed/tsconfig.json"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.60_1786375693677_0.572033921562588","host":"s3://npm-registry-packages-npm-production"}},"1.2.61":{"name":"@camstack/addon-pipeline","version":"1.2.61","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.61","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"182617f70ba02c315da3630b8840bd7c3e72e172","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.61.tgz","fileCount":171,"integrity":"sha512-kX5TPoUsfNMbl1HRQ3cXNSgwjfhTifK/4jB+tovmsWlHzoI/cDj2qeQb2CHy3xFcCeP/X0giKQVnKn+C/o39zg==","signatures":[{"sig":"MEYCIQCpYTLkhlQ+Xyk339SWjS6Hk2yR+vEck/mQVItHLWEGEAIhALXQdMbqDuU4hYPIMJoKGFUP6dFqfl0f7mEGFLmnQ7b/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11030113},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ef9276e69ec7ee61cf16818100be194b9f1345e9","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.61_1786387906137_0.32328643515682565","host":"s3://npm-registry-packages-npm-production"}},"1.2.62":{"name":"@camstack/addon-pipeline","version":"1.2.62","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.62","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"70defc6ee7a512e9c343ac1f8cd3450f273d2b2b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.62.tgz","fileCount":171,"integrity":"sha512-gQlO5ajL9tsG3Y+PTEvZaSA6TEGjsJpCMoZ+hUSU9JZuDnNEMlpEcvMzzrSJ2zMru/NXk2kXizFsbM3B5B6j1Q==","signatures":[{"sig":"MEUCICWrt1pyc4CNueFNNWu7zUAlAw4GhAzSRnY1o3jOI6IKAiEA2lkUR0cV+G9qup+FX6tXOU5YlqZ8OKn3q7daNd51QXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11033741},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fa0937af2a1d403f0186f132bad2bad67f99521f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.62_1786396815603_0.4498504717614813","host":"s3://npm-registry-packages-npm-production"}},"1.2.63":{"name":"@camstack/addon-pipeline","version":"1.2.63","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.63","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"21f7c37bc1b10e8b884fdc3d05857d0f69025cf6","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.63.tgz","fileCount":171,"integrity":"sha512-7SCw/X8ET5URLCFgQpfC6LsnLWyvweKiYYLd3HHnvzfXNMfFrSho1HKSIgMj0R1VmOlWvFFNndjlNWuPapyNvg==","signatures":[{"sig":"MEQCIF7FpDiPN41g1wPBVullUkN1M7B214InuLzw0Usngf8AAiB88TtDAdPz36SoN601/zsoWHQZOVMY+RcaILL8dxrHLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11035529},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2b583653eafbffd0c42dcc3545faf0a5b91f63dd","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.63_1786399034316_0.8430252635469011","host":"s3://npm-registry-packages-npm-production"}},"1.2.64":{"name":"@camstack/addon-pipeline","version":"1.2.64","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.64","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"185a6512e6de64c8c1734b47dd19e3c29e239db0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.64.tgz","fileCount":171,"integrity":"sha512-dw6rDe56RJPb4Itb+FW7YbtdY3OF3DWK1M+hYWMjAl9zMSQeipPcj7B2SyUX+DCI9R8OuPzqKiYg0cThK3GsCA==","signatures":[{"sig":"MEYCIQC2jHtqZeytiPM4fe62lF3nJjadLiK5zpJjGQP8rvRAsAIhAKVr95gaWQJDBsz9lnPpNcUmOOKPXzZRuMPORWCmQMhW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11070355},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9ada778731a1ad2c3542866f76e929c7186d0f2b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.64_1786447787897_0.001754434868465049","host":"s3://npm-registry-packages-npm-production"}},"1.2.65":{"name":"@camstack/addon-pipeline","version":"1.2.65","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.65","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"720a6c1878e9851cd4af20fda3fdd59b88e53645","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.65.tgz","fileCount":114,"integrity":"sha512-kexMCVZZiLTJ+1E6IiOCtu96qocnlMzpKGnEQWS8aGj/m+hJC3brjM1CSscQUKBuHtobhKuHvNYywl9qEfbMiQ==","signatures":[{"sig":"MEQCIB4lBHE9cwpIq65X9EJ00eWVnxYav1eUS8gt8a7lbIq9AiAU2ZDRkG4d2rCVvz2RhW+k4BMj4rVCJgykjsXVuYUfsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10366547},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"62839c5ec5cc3235405edc87911e5deabbaa894e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.65_1786519799274_0.24498372038096705","host":"s3://npm-registry-packages-npm-production"}},"1.2.67":{"name":"@camstack/addon-pipeline","version":"1.2.67","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.67","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8455d702d9be44fbaa052b64d78f5e25c164ca15","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.67.tgz","fileCount":114,"integrity":"sha512-H+OmNXfhIieSTBZ6lyUAbk1OO2l/5bCcWhFHlwIZDB/H1HIjOodk34FQN47tpPQlu801fNFYEYNNbipYkD4mQw==","signatures":[{"sig":"MEUCIGc2vrkDID7fwnDZbHWkkeMgLgtnWj3Mazwr4ArGK0/CAiEAxqKxxfJF07++lyQ5NelvtZTjIbHzd5HOrYLRXWgpWos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10406505},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9b27dd78a013d8dc839aaa68198307e2d5d36e29","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recordingExport","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.67_1786529854455_0.9064761302975524","host":"s3://npm-registry-packages-npm-production"}},"1.2.68":{"name":"@camstack/addon-pipeline","version":"1.2.68","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.68","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"87f511be24ac0b80198e0f2bc35ebde3c8bbd15e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.68.tgz","fileCount":114,"integrity":"sha512-qTUZmr5vK4vsJARYnh/V0q3A7tYJhoqu3Z2nvCmVnyGGmEsL8XonNmC5Ebq0gk1xqGhcKLh9X57vNPqLb+aKnQ==","signatures":[{"sig":"MEYCIQCT0yw6YvptPnxM0ANUPrZZDM/r/HZk/h1mwcR5sAsIBgIhAPb3bpz7CsdBXz1nMfDHcKZGGcK7G4uTZKOVG42dlqCw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10406538},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c32d8d2ce9fc0c30b45e2b400661080ec74666fa","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.68_1786532475695_0.6754194718848554","host":"s3://npm-registry-packages-npm-production"}},"1.2.69":{"name":"@camstack/addon-pipeline","version":"1.2.69","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.69","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e2b57b4b4907afdd4dff91c7a3c6568262d57a21","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.69.tgz","fileCount":114,"integrity":"sha512-gEKEDKzLz4Fa3+YrGh2jdkxM+KqII2reZgY94a/So/Bfr9hJOFYEQ9v2Y9TrlNu0kD4G+iff+z67xI0Sz+WOVA==","signatures":[{"sig":"MEUCIQDATIK5drwUiZ5Ax9zkKiUWN2gepvp3Cu4XRVjAwsHOtgIgKZ/AoSf53TV9xkujQrwcE9w0QWHD53FpGYrshY7t5Yk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10489485},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7feb1207dfb59bb4b8df4fd789654c438aa3b5ed","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.69_1786537793213_0.12359949401793435","host":"s3://npm-registry-packages-npm-production"}},"1.2.70":{"name":"@camstack/addon-pipeline","version":"1.2.70","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.70","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a87161751ff8afc298ed39aa2652f559f60b7c3c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.70.tgz","fileCount":114,"integrity":"sha512-URXEq5SzBGPPcrMn0Y2fEd/W/zmiqvvZgDdyUFCFCzrf/UyR0mu18wvrZHCB5KBnL1VV3r07PRGyutrzs3zAcg==","signatures":[{"sig":"MEQCIEE41NaEBzt/ApJyqkN1HkB+53CP33UxMFJHJ1GQ5tAsAiBInMhwoWvxEtnLBgFpzTgCX31dPQTXIXaG7hkbLAhL4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10603167},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0d180a1fd790cb35a09ac589e11974485778b74e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.70_1786580496257_0.8479798580542608","host":"s3://npm-registry-packages-npm-production"}},"1.2.71":{"name":"@camstack/addon-pipeline","version":"1.2.71","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.71","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d77544f16d1d17b370114a7db8f3165f6360c70a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.71.tgz","fileCount":114,"integrity":"sha512-dQL1Xnu12SFfvpUdMVGBOcIyFyWTdlj5zi1X9dU27tVNP7YIR8Iy+PQBAksgmSNebLhpkYFlbDWyQtJlN1WYmQ==","signatures":[{"sig":"MEUCIAZIoXcN45zjNvBG8wcz7pBmYBSTGzzwHNRhvJ43agM7AiEA/lK7xKuNQINGvayb0SEks3PzJ1B7Z6NPvkplATrZ6k8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10672284},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a9e49d37add742e70d4a5479e702a0c9bed68369","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.71_1786609541723_0.48314358321564765","host":"s3://npm-registry-packages-npm-production"}},"1.2.72":{"name":"@camstack/addon-pipeline","version":"1.2.72","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.72","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"3db7dafc6c769bedcf191327b564ea5ba8bf86dc","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.72.tgz","fileCount":114,"integrity":"sha512-m7J1tBcpYImYAEaJKuWGK5E4TtxP7NeLoTRnom6cbG0oBh+ibpMvF+vH6edcobl1YinNqEkjqRu4D4sgO4JIfw==","signatures":[{"sig":"MEUCIBhEWBh66Iv2bUhJ04aUOXCPHV8gIk5C7ejJABdNgOEgAiEAle/H/xceu4pd1cGu8QSdxadxHPtcis/vJRc4fn5IBzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10679561},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d15ab764cea42278cd507a3eebc151cc04e1189c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.72_1786627946687_0.14708679398253577","host":"s3://npm-registry-packages-npm-production"}},"1.2.73":{"name":"@camstack/addon-pipeline","version":"1.2.73","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.73","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"bbcb345bad662430f4503746429d5dfc62531fd3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.73.tgz","fileCount":114,"integrity":"sha512-shJKNcUKJ8NpDLYEbrAc1mGa9UBm9G8avY9rCdr9Q4UUvA31JrpifgbiMvYZz91i5kXSxsbfkHH5omKkq2oSBQ==","signatures":[{"sig":"MEUCIA0p9XBX+vb/VhURMP8fW8Yw1owi2MX4C6u2e6ymcuXpAiEA+FFGFzZCgWAa0Epr08YpYwwZANtdtL0jWqor5lSeUs8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10685271},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5dbfb970e425ccc90c46eb65be0b0cf432c1b309","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.73_1786645234137_0.45616082707340255","host":"s3://npm-registry-packages-npm-production"}},"1.2.74":{"name":"@camstack/addon-pipeline","version":"1.2.74","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.74","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"83575d1407de42a9fad4f576c052ac5dfbf62397","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.74.tgz","fileCount":114,"integrity":"sha512-Q/U7fHQL4MglJ0+0SiYvWkH6ZxR19R5GG5j9dfbYcyZghpF8MXLcBUjLEqCpxjTtNs4H+VXNGj2t7fdEKLh0gw==","signatures":[{"sig":"MEYCIQCdFwpHllSnUK2y8SDblQ5saz8GQ2HvuVlsVBzKxVuwsQIhAIEtbvmu0sq0ywe88GpOhzE3cuuPB8oXOZ7Py0gy2bjX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10692605},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bd7593a7d8ace440da394b8377dc17e261a6cf28","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.74_1786654525965_0.4877918874690734","host":"s3://npm-registry-packages-npm-production"}},"1.2.75":{"name":"@camstack/addon-pipeline","version":"1.2.75","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.75","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"1e2bd28a7ce58b96eba71a54dcf61b3f089f5638","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.75.tgz","fileCount":113,"integrity":"sha512-mpvM5lgl+GMTxafgrqnG9GNcIlTDy52YDSFwg8z6W7c5REui8tzCSWmzmhEwUKizgy2R/cvgMScfDDiNi3E+TQ==","signatures":[{"sig":"MEUCIDVSxvI2pZjpqMsxGm3iUPX/g5ucfPw4WIN+ocyCXddgAiEAgsXhPTB157hiy/PMwZL5Xnsv9+2dz3MZfl690Z8sbGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10822411},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f7b65e42aa342a631507eb87a5153a5f5b2193a2","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.75_1786701967559_0.2547039381846459","host":"s3://npm-registry-packages-npm-production"}},"1.2.76":{"name":"@camstack/addon-pipeline","version":"1.2.76","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.76","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"50b419bf99dcb830ec26ba198a1dd614b6c4eb3e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.76.tgz","fileCount":113,"integrity":"sha512-jDrEe5oPkT7s9EKCAAbT368UVpNBs+gnBcM7aK42Yk+0l75FxL5SwnQNY8ROQ/iNNtMuvYlfe0qL1a4RikqnHw==","signatures":[{"sig":"MEUCIHWRsXv5E2/lhmIubRkr3hscUsqzwYv/6pbDXLFUsaNfAiEA5n3JsfhSbshW9l8o6tGEPicv8Oyt9/rZf3pANOEPy0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10854533},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4b72dc57b839cc0c4bebc0247f7467ca029c288a","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.76_1786717043655_0.20371841405190327","host":"s3://npm-registry-packages-npm-production"}},"1.2.77":{"name":"@camstack/addon-pipeline","version":"1.2.77","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.77","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"ae2fdb8f2c01f22d487b7c3579a37b00b622b4dc","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.77.tgz","fileCount":113,"integrity":"sha512-0W9Yxhp9hb/p6HHefkIl+YDKJXYOwph7Y7nUwvjJOn/ZtpdD0GYw06dsEgNlPbXb2sJqpfj0+0qU9qDWiu+R5g==","signatures":[{"sig":"MEUCIGqbafay306/EKuDw3r4GWWJIr8QKeSTHDvi7h+u37cBAiEAkLTUGdETbpGTPlTpKRH32fEXxxYAZdPLcKjh/mTgqik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10929471},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c510f2b0b45a50baee92a1c00bb1a0b7b9e8884f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.77_1786741661513_0.08435826732600904","host":"s3://npm-registry-packages-npm-production"}},"1.2.78":{"name":"@camstack/addon-pipeline","version":"1.2.78","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.78","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"7d23b72ea5b350c020dd445af148d8fe0dc50fe5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.78.tgz","fileCount":113,"integrity":"sha512-qXwhHbVKQ7c5AGiKqJ1CTsrcwQI/hGgtORppEik7zamP7RqZP/4V75j7qy8PYMeTdPLeFxHw26LzSF93oJ39Qg==","signatures":[{"sig":"MEQCIH1kqrVcglSHeO6Z7xbcUYWgMuQ50F+GuhBZ0kbCF8r4AiAJYo/2fo9osu4NOlgIIA3DQUADzWj9wWUvWrm0qrECdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10963471},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e5fb7dc50ab23a46736933a2769be3eaae2693d4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.78_1786748910121_0.712782112379039","host":"s3://npm-registry-packages-npm-production"}},"1.2.79":{"name":"@camstack/addon-pipeline","version":"1.2.79","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.79","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c3d60fd4b1af2c933f71d58a3776f38c8beb566c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.79.tgz","fileCount":113,"integrity":"sha512-j9sGladkWnU6SQeU6Mf+mD9uJgrleDHylEGzLdg1Gcx6SKLgCek1C5F/CqVMlY5NrUNcyxnHbwehhmB1BZahog==","signatures":[{"sig":"MEUCIAb4lrgEUqThQT/nkR3tz5vwoVRmnnh8HKENGk3X7F90AiEAgnoWfsM5RZbCfyA5YRL3z2pEfVKMmVAWXSdLvXwsrVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10988771},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9ea5fddc0bc3fcccdf1bd5c6053c906e83736d80","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.79_1786778248092_0.7872201000709382","host":"s3://npm-registry-packages-npm-production"}},"1.2.80":{"name":"@camstack/addon-pipeline","version":"1.2.80","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.80","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"456471cba1229c3eb471d42efd54d05a77aa411d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.80.tgz","fileCount":113,"integrity":"sha512-iMYkuEviVtE72ghsQZSQ8R5Kr7CovWdz9b9Gb/NkS0g+tZkTfj1ujrKkO+b093vzwjhhPqEsnuaqGaPDRlTDzQ==","signatures":[{"sig":"MEUCIBwGB6pkVLbjYfpzQMd960lD/sVKHb3eZsXmJXijVsUHAiEAwFBrla5jiWa+x0R9XPb8vQqvzvQJaqFyWT+e7UTS6Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11005064},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"217735cb086be7859b89c728c0b295732290a832","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.80_1786790449594_0.8207890938649978","host":"s3://npm-registry-packages-npm-production"}},"1.2.81":{"name":"@camstack/addon-pipeline","version":"1.2.81","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.81","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a2e81240c2f0ced357db64acf085907b36c43943","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.81.tgz","fileCount":113,"integrity":"sha512-VK/y2MqKi/rQevos8hlrR0b1a/9U21ZIWP5bg9AoVpP9I/gHbyGsrDwzf5d1I+YAJmDvbPKzOdOZPFwtlr3eSQ==","signatures":[{"sig":"MEYCIQChEQf7sjLKIX3GttEn4BLwgoIxsHOssqT0y/8fcNqZzgIhAI6rCamWLg8baFLhssqcftjClVgQ8XqPZQAOmgR3SaH5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11035716},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c71588fe3bb5dd02f1ad2d3818748de3e818672b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.81_1786794132841_0.822504029816479","host":"s3://npm-registry-packages-npm-production"}},"1.2.82":{"name":"@camstack/addon-pipeline","version":"1.2.82","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.82","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"7658e08e45a0c43a752f45239f29e2e6428804fe","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.82.tgz","fileCount":113,"integrity":"sha512-TSixBF0y5FmqJgEgyalq1nODMnG2APXGenvTByiQfT4wyTNbV1POO+grHrzLBYlyLwyBap7n3Bthb5JQ+pJDvQ==","signatures":[{"sig":"MEYCIQCnOOfB8hBWFHyJ9uAKQ2Qh6xo2RZFKrzK4nUI3pvfsRAIhAJ5p8xDCCRzs0YGi3zG/TKmU1+LVm6k0adN3hUVfsrVq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11038631},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"937ec0309dc5301f0b6f8ee6a3a4152dc97b8754","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.82_1786801110004_0.5640284570779994","host":"s3://npm-registry-packages-npm-production"}},"1.2.83":{"name":"@camstack/addon-pipeline","version":"1.2.83","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.83","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"7f009cb62d8d53e2a6563e9296add50f8df3ccef","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.83.tgz","fileCount":113,"integrity":"sha512-MMDq8L+8Lk3JOP9xvYwXPNqWGPTvOXENhYrB03n6OsO2T9btqKxPce1VPVLdrKL+9+fCEngJnSxjSvfmYhfZjw==","signatures":[{"sig":"MEYCIQDRcK3IrCedY+RybFIbpNaLIjCz6dTYC5jvp8eI9T2qkQIhAJQhh9fXzfFyw4kqSPihv/AQi/GtQq42GGxw79wnEz0f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11041287},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1b2ab6c46a980d6b27fd53d5476cdebaa7201a9c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.83_1786805311857_0.43496213318808263","host":"s3://npm-registry-packages-npm-production"}},"1.2.84":{"name":"@camstack/addon-pipeline","version":"1.2.84","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.84","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"ae4f339acbb3aeb0ec127b29a8e573bc10d7a0d1","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.84.tgz","fileCount":113,"integrity":"sha512-9gMzjn65OMh/axRN3qurKAaUJlf2fm8jmoHwHf8H18Rf5T+jVy/Xs/b0fWTJnOLipZvR7cmr0jUu5XhkP7h6mg==","signatures":[{"sig":"MEUCIQCdNCizbXVDbR2xoe0qv+VQ56+Gh72iRUJra5Vw6JXfmQIgYpx1sgDyZjPZ+mGK9Bx2rAgj5sJSrCyPefOmmLg8y00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11042423},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8c8ada3d59ddc8de43b065fc84b1e6d6443d8518","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.84_1786808100971_0.3306935937411377","host":"s3://npm-registry-packages-npm-production"}},"1.2.85":{"name":"@camstack/addon-pipeline","version":"1.2.85","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.85","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"6a2390509db9db2afce1a3883a7cd8daf42e7907","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.85.tgz","fileCount":113,"integrity":"sha512-Ilfq71Y8YtHDCtKg6U/MKMZqcqfhU+aW7cRkbXfXvxDGPDXLblYPbfKRXQAaZNI9kK8aRp6QzgTBpBiw1+0ovA==","signatures":[{"sig":"MEQCIAyHHIokG7YltYeOgsi2WKHJN2TWEAVDa9qg5YPsuoUMAiA+yD2S+PFnjAmOe8ne2zRXBU6TpGDtD5yNzRtHVVvFHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11047714},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fedc4507cfe712484355ab086b0fc5f1e1d088c3","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.85_1786808390221_0.15701039081906853","host":"s3://npm-registry-packages-npm-production"}},"1.2.86":{"name":"@camstack/addon-pipeline","version":"1.2.86","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.86","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8ab36cca810f65972f5cdc330a373ac3f093ee70","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.86.tgz","fileCount":113,"integrity":"sha512-Sf8eEETqKcvFjTAC3VXIQwGe+tKi0y2QFaB8pL6DVOmScgp0GjV8/XlXhU3HGQTAOlbmn4v2csIPX3Kyjd4rXQ==","signatures":[{"sig":"MEQCIAimJffZANCi+otS6LxD1tzZGsIlhI7tP/W+ynZlcUt6AiAEJhtjcHagRmWbTs/Gipz1BVd92M7x8nllSkXy40DO4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11049922},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c7478923ce17ab53c55ff6ca370ea25c2062ee38","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.86_1786817890394_0.8832534818384925","host":"s3://npm-registry-packages-npm-production"}},"1.2.87":{"name":"@camstack/addon-pipeline","version":"1.2.87","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.87","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"99f1cb4101798db2abb835871021c14969155320","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.87.tgz","fileCount":113,"integrity":"sha512-WSdbw/6LMrn7Q1cWe1o3I/76pU1DXfYywED73tDHJmFWR82FXtj18I8ktXWJEc4W98N1RSoa4n5atS/NizEv0A==","signatures":[{"sig":"MEQCIBp/fhS5/zH7QFw/oUJ9SnEzr9at7U7dWoX1Dkkoqw3NAiAIRILj7HEdZUQ4bUjYWlzAl7NHRJ39ukuiJhnlFLL+PA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11051720},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5e4cfb34a1c213048057187ee38b1d4b292e5806","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.87_1786865513682_0.5715241723947924","host":"s3://npm-registry-packages-npm-production"}},"1.2.88":{"name":"@camstack/addon-pipeline","version":"1.2.88","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.88","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"beb0c24c40a4c7aa171b9d462b32722efc565cf0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.88.tgz","fileCount":113,"integrity":"sha512-xgzxUNUZEk+gmW/TSkPJZt+0Rcp4dEdjuB/mQHIMFqRufSdQOzPm9Ide/7mei+WJjokCpi/edZtzsxyWd8k3Nw==","signatures":[{"sig":"MEQCIEgfoc1XLYvGSZN1qq5AtbRMsemJAj4Fv5rI7cpetRASAiA8xKBgaxfdeWLsKBF4QEH82jbwurfRXbinJw7ZT410YQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11052590},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e4fbe5fd5f556858fae1dce5b6309b51e932bdfe","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.88_1786868683971_0.02887336084481218","host":"s3://npm-registry-packages-npm-production"}},"1.2.89":{"name":"@camstack/addon-pipeline","version":"1.2.89","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.89","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d5de7c6f2fedd1e20f031aa564a78ed73690eec5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.89.tgz","fileCount":113,"integrity":"sha512-wjGgkAsy25V/NYXAXAfu9IoUiAp2oMsT7UKmbHBseEoYJfg63q//pV0mcpND+tbZ31xolz34uMDl2B+W9W3D0g==","signatures":[{"sig":"MEUCIQD2SvBDsgVPlGi2iGm9bkCRdvMCj8saQFuhXhrVIfENdAIga3f91DtFiHnXWSF210hHoXkfW4wVo92P2nfsWsUffrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11067044},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1ef3f8b484eddfab5b01cba45666dbb4dd686be2","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.89_1786911978722_0.45960888346755424","host":"s3://npm-registry-packages-npm-production"}},"1.2.90":{"name":"@camstack/addon-pipeline","version":"1.2.90","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.90","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"82809f87da87c1df14ff2220838e5983369dc6d5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.90.tgz","fileCount":113,"integrity":"sha512-t5ZFAZmyWR6xfJ1R4Q6CHNZnFGQB1bR752at/oT5y0MdMFgh4uv/pvXHJA0drBtEO37ZvsYhbqXUSijzHmMA5g==","signatures":[{"sig":"MEQCIC83wa33ZcSmZOldAy/5j0wazIwJ+8tUwu+hAO3aHPjNAiA/82vBnAA5Udqs2hnBw49SzJG1+tbESVbRY0Kh1rm5vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11099305},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ddc0ffc5cfca59a20bad2d90730956ed50b36561","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.90_1786947185475_0.2327605200141023","host":"s3://npm-registry-packages-npm-production"}},"1.2.93":{"name":"@camstack/addon-pipeline","version":"1.2.93","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.93","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f92409f8bc09fba36a5f45bcee373fa89e8fc8a5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.93.tgz","fileCount":113,"integrity":"sha512-+LxjWqP1rtYepKZzI/dbsjmXNBz7K3B1DZcaI0P5ICUyGLTAATTTk96kyZBtAdznS94iD1rQ7wthzsVa8xJynw==","signatures":[{"sig":"MEYCIQChtVoHsl7CGoTPKd8FhaG5hTZHecqKwp8d8NQmAkWPjQIhAMFqWawfa4SO2NYKDhXZHsze7cUNu+OoaKjaUtEJosPH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11127639},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5e3fd685833662aebfe7714dc8f35cc82703c020","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.93_1786998623570_0.22835384098659817","host":"s3://npm-registry-packages-npm-production"}},"1.2.94":{"name":"@camstack/addon-pipeline","version":"1.2.94","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.94","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"18bb683e25bbf77892ef4e9ac8cd25db4d9c7b01","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.94.tgz","fileCount":113,"integrity":"sha512-YkYt7YHCMLgGP+Wjjroi5YMxdCO24xpRLkDLaOTufFJZ3jH/aY/3I2YUcuxBeJqPZas9gUgZgSErNSNikidiOA==","signatures":[{"sig":"MEUCIBD8BEeU4x4mp0CzWKvvxdAlE9SRHPRXMSpfJFOD3PulAiEA5/mb/F8lvwLQpeaz6cbtX4yooXZEVPOhJHQKSUZIRpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11183764},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"29cbd2c710e31b6d84b1aa23bbb8c874faf75ea4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.94_1787051723249_0.4394254134521207","host":"s3://npm-registry-packages-npm-production"}},"1.2.95":{"name":"@camstack/addon-pipeline","version":"1.2.95","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.95","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"31acee6bec46441aaf3d1c0027eacf7cd8a39d6d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.95.tgz","fileCount":114,"integrity":"sha512-coDV7WFlY84n4pUk074vjpCnMYXBkFPPp3QoLLpjaTZYehtayD7tlO37KV2WTh1+ySPvG4mPojhvXXBXFj8cJg==","signatures":[{"sig":"MEUCIQDnFlUb9Q6c/2gp1oDNjxwKk6RQOK3RD15n6PKahHNfwwIgUtSUcF6l/ghP2HZi5n9LynT3FXbiecsyZIaObgr2HM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11268573},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"70cd174898ab0b46cfee939c1437d7ae7ed38a13","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.95_1787073605458_0.30162665062891114","host":"s3://npm-registry-packages-npm-production"}},"1.2.96":{"name":"@camstack/addon-pipeline","version":"1.2.96","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.96","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f3b4366f8d14b683279de40c4f4212b4a6b07e1c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.96.tgz","fileCount":114,"integrity":"sha512-9AznkvU4JTxbhf/y2nZ+mCQps0fxdSRWz5Wzs1+YdR+Ea/DLC6C/qt/qV6aU8sguOuh/0+amxb0Byjt3eyzaQQ==","signatures":[{"sig":"MEQCICyJVdTkKYjjiVc7HUu0sMjqW4Agid1rfJZymX+zyfhCAiAPuAtv0QB8BFE6x2cL8J8CB0zJSTlTXsTxgErqibcz2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11269444},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b7de04de444fd5c9fbbbcacfc674cc5217a168c3","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.96_1787077884544_0.698957644404167","host":"s3://npm-registry-packages-npm-production"}},"1.2.97":{"name":"@camstack/addon-pipeline","version":"1.2.97","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.97","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f1a9d0752437f891c60e60c027db3795156c5194","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.97.tgz","fileCount":114,"integrity":"sha512-TU4mS5LmTM11dI5sveqK6wmU+ZOwOENWzy6rK9Dy7AwzlySYICp3dz094gd4DvyW8jD3wdOuUN1/bMMlxzve1Q==","signatures":[{"sig":"MEQCIGtKr7NVT9189jschPvco3I5zkRpuWrHCBirZ6XASOOxAiAUVCJlTg2h/i3PFL6b65XguGCQpQdF2AkSrsaUvDAbng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11278926},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"87a4d184eba85731bebb737cd967648adca2dd78","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.97_1787117044526_0.06426502694130365","host":"s3://npm-registry-packages-npm-production"}},"1.2.98":{"name":"@camstack/addon-pipeline","version":"1.2.98","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.98","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"35500ef25b5342b607c553fd4a14867f8b6c9b89","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.98.tgz","fileCount":114,"integrity":"sha512-rM8eQz60cY/jPfmCLJTej14SFpzNvp/YQgAC7q29WzOtbkdRkR4azxSqopz5pu7Hq2OtmUB/YwiPkz2SlhwyLA==","signatures":[{"sig":"MEUCIHGmILAvfGbA69K8DxCoOCxAArPvRqwioTSBbnichOtRAiEAoYXWCOpOq6tKFtShzRkDZy8+KzxFfCkUeawfV/Uk7iw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11299264},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b957f9501b8f8c043cc8ab529cdd4a8f11a65c6b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.98_1787143168056_0.909830666129281","host":"s3://npm-registry-packages-npm-production"}},"1.2.99":{"name":"@camstack/addon-pipeline","version":"1.2.99","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.99","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c0c9a6fdebe9b6d7a32ac17d62150d3237b58aaf","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.99.tgz","fileCount":114,"integrity":"sha512-GVI1A26ciMaVHjh6IVms1rB0Wo9DZQGhkVN7RT+ovUTYjYo1C6JEMlxGn6zV4P56ODQ/Zu2kXJb65XOj06uwDA==","signatures":[{"sig":"MEUCIQCPaAfMLmyaeLbuN7rQyUIjsiftgOGk4cY5Z6d0O/eGOQIgRaGoSFVDiEzFgbdZiOQQjkEduY4pBVuEL2qJa33ukTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11299264},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7411786d74641ebd133a11fc0ce61254ae7717d4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.99_1787148920952_0.7677115097226255","host":"s3://npm-registry-packages-npm-production"}},"1.2.100":{"name":"@camstack/addon-pipeline","version":"1.2.100","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.100","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8a8e27e2bf98eb171f2d9d81c1ef5504e2a6768d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.100.tgz","fileCount":114,"integrity":"sha512-ZDHa8rSkUJ8fqIPWxv2PVtiNYoyBbLRD5TZOsJ2AobSunhXcdNGEmQrC1Ox+Ub/gcn73UKel3/APgFx/1dFa5w==","signatures":[{"sig":"MEYCIQDPvw1EyH9QFLBTHllywkMWfsHG3Soeqjpa//zvwCsnJAIhAMqR1vQ+h/pqU6wAJUVlO7YfRhOB35+OYtcCd+wiFRnL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11301979},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f4353f06d8692f03672cc9dd947093f7e993592d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.100_1787160226185_0.6512690224291751","host":"s3://npm-registry-packages-npm-production"}},"1.2.101":{"name":"@camstack/addon-pipeline","version":"1.2.101","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.101","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5a8bed614aae99e55fd3f634ac7d9230990c1371","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.101.tgz","fileCount":116,"integrity":"sha512-RRvfUuQHiL7Ho+E3mCT43GQVLu7QnMwUHa4+LvPhVxFvc14UbdxqnVOLDzQQ/ML1jNgbJgaIS174lS+utMtq9A==","signatures":[{"sig":"MEYCIQDPi33PM/Ha5n2v6Kl9X47ZgpT0PFPpiIF8TXRnKukJKgIhANO9nOq7U4Z2W4t4YwbQtrSqBqfag3mZh4uafnI8s56k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11351850},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5e2d4a71e459c31a28ebf784c866b15aed800a2f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.101_1787170109793_0.11392198865568326","host":"s3://npm-registry-packages-npm-production"}},"1.2.102":{"name":"@camstack/addon-pipeline","version":"1.2.102","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.102","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f5c0e5e4ed756ae551248ed0a68d391d2a47d125","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.102.tgz","fileCount":116,"integrity":"sha512-dLCtQ9e5FfDJMXntjArdhfVjA7vwi81uubrQ4NSsQ/Oi98S4TBWJ4EJU2LoAxTC/IenrNPYZICFYzXbORx6Sbg==","signatures":[{"sig":"MEUCIQDbdwORtlfr77SRp+MuXHcE7s3fHb2Cj4irpQdOxDGRbAIgYS3YKWvOr7/T6Hxtk/orsr8QuNJx+WZP7GGerMp9vbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11377198},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"35aea1f7ad9c442ea33699023105938c47709a70","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.102_1787178686573_0.7366651140141076","host":"s3://npm-registry-packages-npm-production"}},"1.2.103":{"name":"@camstack/addon-pipeline","version":"1.2.103","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.103","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"27332c6e535713f4bbe6de947edb95e7c59dcf39","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.103.tgz","fileCount":116,"integrity":"sha512-3H60pi4wa22CHiNxtBw9CEQzPwcEiFWthQzZ1Hmw+ItQhFNdDVFRmb3GtnKA9J9QWuJQzIwNF13ZXfpyeEftZQ==","signatures":[{"sig":"MEUCIBY6X8QsuLRcIkTCj49dxa2TN3vseotELQ7Zi8lAjqFoAiEA0WZ4Kd0BuAz52qYuTEupVPP1cPoiPh3jB4k+2sS1O/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11379480},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6944d87b55847ed2beb72832cb103d7a2c60eb0b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.103_1787209173386_0.09739725125280385","host":"s3://npm-registry-packages-npm-production"}},"1.2.104":{"name":"@camstack/addon-pipeline","version":"1.2.104","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.104","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a9cf62234b5bed6861a3584af9eabc2d186be3e4","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.104.tgz","fileCount":123,"integrity":"sha512-Q4BLVj2+O0z1yDFQi1aRX/DESj8sqeAs8PmNVc17pEhb6Yl2oK0IMFxCEnLC9pGq9OmGKS16yvVTn5KG4UDNYg==","signatures":[{"sig":"MEUCIE2vQ4B5HyKfqDXQHv9rHukoq9qLAANCkcl6cDxusvjkAiEA866Foe799YwxXHp/NTywu+cxwdEKzIgNJXeqIWa9ymo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11610360},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"68169d50000241c87fea8e7077f6755c44966046","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.104_1787309713483_0.7167583700638971","host":"s3://npm-registry-packages-npm-production"}},"1.2.105":{"name":"@camstack/addon-pipeline","version":"1.2.105","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.105","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"4a63a0aa66f214ae79c9304a844f1a59166366f5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.105.tgz","fileCount":124,"integrity":"sha512-CG/9Umrdm7Fxc4s13L/s01vjIW3y13uSB7M/MjfOBXArHHHWlF9tpYRyqEovK72BKx6fCmCtairHfs7SzaY53g==","signatures":[{"sig":"MEUCIQDta7U4SjF0EhwtgQFG5NES3ZvUd4SKNc2C40urOvjRtwIgCxa2xRJwpUeM1+ti/zglGjv5BMWJd1yvqz4dol8wMGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11651106},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"45736c4a7f7953dd0cebfec943ab7443e8383c92","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.105_1787348444129_0.5191274658291771","host":"s3://npm-registry-packages-npm-production"}},"1.2.106":{"name":"@camstack/addon-pipeline","version":"1.2.106","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.106","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c396777c2a7f4baf88301c43cabc4e8fe2c56cbf","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.106.tgz","fileCount":124,"integrity":"sha512-ihOOHBFVwKMrmcceY+qoMSHWLyKbvLUtkxv5QrU+1oTdKFk8x1zXLGmf+VfLnUWzBx3ZWy0czRWH73QkISdn4w==","signatures":[{"sig":"MEUCIH0Xg6jEhMv08uwhh3dhG19y4X1o5RmYAIVljS2BwHoWAiEAhlEptWPJQUqg/Kk/RyPrB2EP69NQNwtBH6jJs/hIegs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11651902},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5681e373f14176ca241f652d8147f24a4b262644","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.106_1787378706351_0.19528536207781344","host":"s3://npm-registry-packages-npm-production"}},"1.2.107":{"name":"@camstack/addon-pipeline","version":"1.2.107","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.107","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"051c7c15d1a68b6a51f5bf5f2cd5f78e82935769","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.107.tgz","fileCount":124,"integrity":"sha512-HBcP9IPEnigSx1Ri9+h+v5BfOmVUUqHYo1mhBppUYk38ivoVt4yOZGB1zM15YnEbSzQmf6AkLzhOyGrH0YCzfw==","signatures":[{"sig":"MEUCIF1yuxXSP3ddHdbI4MDTOAl6Ez4DPs3lEamvOj1M7zJ8AiEAnV1g8ppzOK52UWtK5UAdzkIkHZOhXbdnMWickqGMch8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11664279},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"563cea0dcab8368adfca8c5654e9ad2d97c1d49b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.107_1787387827328_0.0528691802436394","host":"s3://npm-registry-packages-npm-production"}},"1.2.115":{"name":"@camstack/addon-pipeline","version":"1.2.115","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.115","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"611338700a6a1f3491239fedff95c1c83d212762","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.115.tgz","fileCount":124,"integrity":"sha512-qX9wfGJJmR4IEZ7Ftked2Lg1trkqd7fUmCiN2B6jnpzLfjYMqxx/lng02YUY/+40VI1kAJDgXmEKycKbYq19Qw==","signatures":[{"sig":"MEUCIGn2PilDwLgsTO4pJ7lS8pQXCJdc68ilyycYc36vagtyAiEAk2E48p4nSDlAg0Lw4n4BGXS8giPZCJKEX7XUM/yEZUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11775773},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3882a8e91ac4ad07aefcc29ec40f4bd63a5c0e14","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.115_1787498961532_0.9590806015769759","host":"s3://npm-registry-packages-npm-production"}},"1.2.118":{"name":"@camstack/addon-pipeline","version":"1.2.118","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.118","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0ddd390bd07cd01dab487ef24f02c24c721aa04d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.118.tgz","fileCount":124,"integrity":"sha512-gbF234rXqTKd8nlPv/+fpzsGOrmYnLC7bnrlsR02StYXHR1M5AVLqrzxEWBQXBlr0DaYfvEn/AU6qluoypQlEg==","signatures":[{"sig":"MEUCIC1e8MdQyypRiccgqbjC9cEtVorDT0M9Bfsvx9e/fYwPAiEA3e8Oxq1J8016nHM/Kus/BogR5bOjePQkK0s78c1SIe8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11792938},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f2d98eb834b51ebcc335decbae56d5ae26d84247","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.118_1787525241046_0.5944124935623454","host":"s3://npm-registry-packages-npm-production"}},"1.2.119":{"name":"@camstack/addon-pipeline","version":"1.2.119","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.119","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d7cbfbfaf4d0ef2cdd7e672636ba22e8ada17746","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.119.tgz","fileCount":124,"integrity":"sha512-axvvHvjfqt4lhhvo/K5NMW06a8ea9CGXGHMw37TzcAa/NVkqiYT20mB6pJHV0bkOquvDpCioDRqpDzCw3G5hFQ==","signatures":[{"sig":"MEUCIQD90F/wd5yofCuATZiJOeAKLFAix3kWQq3KNmx1HyoIrAIgJvse5Q0kAmZ8jt93LkgVMoZFmQXN766mm5rTf+yShqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11799789},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"160200681290696944bea2c1b896d63da875e394","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.119_1787576412364_0.8572326543818869","host":"s3://npm-registry-packages-npm-production"}},"1.2.120":{"name":"@camstack/addon-pipeline","version":"1.2.120","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.120","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5402daf9c658dc5da68c81ecedb7cb4451e19705","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.120.tgz","fileCount":128,"integrity":"sha512-4TZKJ3iWmu87N42UhzbTl1J/invKqJRyNaaYDsFmA1QCcH+UXW7/GH/4HsObQQfYHMEyCX4WO8eQ38b0o/prpw==","signatures":[{"sig":"MEQCIEEZ47anGsiatColS1W//+rar9v/83Ysjhtmb4fXl0T1AiAWf+jeTl8XEdqd23khOR7Kkv21iKO/nrHmKUIGqYJvtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11819953},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d73ddabc2238d063e4720235bf4de02f19e81afd","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.120_1787601316482_0.6180447860709033","host":"s3://npm-registry-packages-npm-production"}},"1.2.121":{"name":"@camstack/addon-pipeline","version":"1.2.121","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.121","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"7ed649926941e2c8451b40f97c2eaeeeb588152a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.121.tgz","fileCount":128,"integrity":"sha512-GGueFo7CqTIfTKdt5tdx9HKqJAcl/FOW78gl/e84vWoQMVr0Ru8iJsPA60Klf4y+hQ+2C7kD6c3I6h9yW+pLuw==","signatures":[{"sig":"MEUCIQDzWHYdmYVTV64TSHl/Xi5zH8ZJTmcKC67kneqYI+8xPQIgSWGcAGkZCGsJ4esZGH7gSd1sJ9DhTGjXqUmg4T/8Dfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11831797},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"692df60168822f28a8d35baf0cf63cd0508414b9","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.121_1787641083924_0.344657673759839","host":"s3://npm-registry-packages-npm-production"}},"1.2.122":{"name":"@camstack/addon-pipeline","version":"1.2.122","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.122","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"36f15c8be1de89856d53a08dfb75dcc5467477f6","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.122.tgz","fileCount":128,"integrity":"sha512-FVd5CgN6FlT/dQqIurhrNk0sk7ju0gzHrj14JFwssUXSHCVI4MVjVVPGSLVxZI/hQzrKAkOmnE+SsMEkCeDvDw==","signatures":[{"sig":"MEUCIQD753hc3NADeodJpUZjnynRQRohf4teqdjG8gsHrsiPtgIgUph1zRUFWundVQs7bMmO5jM0A0pb+SR3qmQ+A7y6pLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11835712},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d031e10a1125d8d238a69693a9d1f6cdb9e2fba2","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":0},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.122_1787642232723_0.9385400316371846","host":"s3://npm-registry-packages-npm-production"}},"1.2.123":{"name":"@camstack/addon-pipeline","version":"1.2.123","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.123","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"65fc5dec250ca623b5323f5f4ef491e901b6b791","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.123.tgz","fileCount":128,"integrity":"sha512-dDVKx/Ke5TIPnb+aDLxPszfGC1AOed77UKf6HjKxOA85eVu+zB6fktcgGOxINC8AoOpoX3XiCncjNIUGzlembA==","signatures":[{"sig":"MEQCIFOnEMU2HRfilzefwxEF1ndPNlF0xIsYLwE4sxFOVMQhAiBy0WIcqIdUNlSC1lOXyKWTUeQhPVDDXQ3m4cBWfpXiOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11858137},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d7d0cdbf225abf8bdcb41229c0fcc8d4c332d96b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.123_1787649984043_0.6071885839796154","host":"s3://npm-registry-packages-npm-production"}},"1.2.124":{"name":"@camstack/addon-pipeline","version":"1.2.124","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.124","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f3cbd0f9eac85b10ce189e175fa0f87a11694e6f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.124.tgz","fileCount":128,"integrity":"sha512-wtMi1jhR44g7fb0CgJCDqWHdTesHEYAAjcsF+fb3BMd9djQsppakWDzInXmiQXPSkS/s6k0+1OWeE+rfewuYzQ==","signatures":[{"sig":"MEYCIQCMX0A/EafihAJCMiaUVT6NmV7lhUKGej92uI2js+QSOwIhAL2fsptwd6tPPpNNhk/YebaPzYzGPCi1xrVzE7iCOid9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11858137},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3c15e605d47f236391970b25ce3899900df93126","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.124_1787651328312_0.9786803142916662","host":"s3://npm-registry-packages-npm-production"}},"1.2.125":{"name":"@camstack/addon-pipeline","version":"1.2.125","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.125","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"9ade70fd4dc63261d48cbababe7164142524d367","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.125.tgz","fileCount":128,"integrity":"sha512-zW7yVP/Rbi8iXD2XUQF51eDUWwp/Mu7x427WV8PDJeLdWgS7xfnqEKIyxlPjJPrvA/VMxtxGfAvQ87jQhgrrEg==","signatures":[{"sig":"MEUCIBiCa2wdlfBP7ySayqH/bR0erd/1Bon+R3V9Ykykw2TxAiEAqwaN10q/PWLYLEDTGTRFE2J30ep8N2JI6DvshJ077nA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11870703},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"db421ea224fd5738e3400912a9ea0dd15f1b02e0","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.125_1787660944537_0.4677506304541721","host":"s3://npm-registry-packages-npm-production"}},"1.2.126":{"name":"@camstack/addon-pipeline","version":"1.2.126","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.126","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"4038e99edf1a498bae183d5e9a9b8c9941fbfa47","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.126.tgz","fileCount":128,"integrity":"sha512-wTltjATJKDy1ubf1W440lq4GMMczJAILQ5Oncdt6nX92cBrJDynAKd+Hzx6se/0WRLSuSr7ZkWOVqJTGHZpsmg==","signatures":[{"sig":"MEYCIQCPRsR7ghvdQEhX+w9zoGCBA/KhgHUD/MGwyidd//58ZwIhANbwishVWCQjAw2/s54GVxFW5Xd+6lUuhdNId/8L7BzV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11871599},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f9300e693bab6366d7e02a089cb28467731fd281","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.126_1787665174498_0.9799236585663138","host":"s3://npm-registry-packages-npm-production"}},"1.2.127":{"name":"@camstack/addon-pipeline","version":"1.2.127","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.127","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d0b29123d38a5ac639c384ba9776224d689cc726","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.127.tgz","fileCount":128,"integrity":"sha512-R79RdXG8qh5ujULctMbhUy8lgVGGaH7my/gbU0akdhYt3K06VgdOHNscH+//cB8ymYY5IUI1KKLNusYCElL4+Q==","signatures":[{"sig":"MEQCICm/zxvRRUVfgpbeDn+aZzb5r/fFS5qBa5JPBE5lYsyUAiAIRkJnoq6E63QyZhEmMonnODyMuZVf+6zotIP0lQnLvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11874565},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9f1f2a3c371f2d056873ec3b1eb8a61f58399972","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.127_1787671445419_0.9377219435548096","host":"s3://npm-registry-packages-npm-production"}},"1.2.128":{"name":"@camstack/addon-pipeline","version":"1.2.128","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.128","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"16037ed4fb7fb00fe4118c4b240268bdffc809f5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.128.tgz","fileCount":128,"integrity":"sha512-ZOksFDY+Tjzcr4RwkTljGIEpIu1O8GQymNR9C8R4ZipSowflza0Jc2MhI1yJBbfz4ZKSKZJEc8qp/W+oRi/f0g==","signatures":[{"sig":"MEUCIHm2FBZ1H2YY/g7zYGVLewlZgTh4sm+j/QQvkpdQoFjkAiEA/0jID08fAs090WWsu3WNQ8SQlzxFjsDl/zcOU1dPumI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11883053},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5db038514d33e5a429e6be9f314d4dbd81f38821","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.128_1787679191382_0.2752607379590535","host":"s3://npm-registry-packages-npm-production"}},"1.2.129":{"name":"@camstack/addon-pipeline","version":"1.2.129","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.129","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"c875ea9007ff291ae775148d486b5e5908362d57","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.129.tgz","fileCount":128,"integrity":"sha512-NPOMAb0L9Soe7rTCtQgB/isWLqyhN+phzhssjmiSVtkQN4FSZo21gpKBA5WMHhx2UcQbjai5E2vgfyGsPoruow==","signatures":[{"sig":"MEYCIQDmO/+NmziQikbh6tNfXFmJJcg/wkQaWxTVTGkxCxSOAgIhAOpYz9yc0CWt5KCqOgiDWrlnkGs+qxIlJH1dbNoN2D5O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11929037},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"45f844d311f641dbea56c2bccf30660f84f41861","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.129_1787689847451_0.7660447158701389","host":"s3://npm-registry-packages-npm-production"}},"1.2.130":{"name":"@camstack/addon-pipeline","version":"1.2.130","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.130","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"18d890e6268678599e97fa080e88439494c11b96","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.130.tgz","fileCount":215,"integrity":"sha512-pKsJ6W14kzjszHuZLTzzfeOVM1wYsPGeJ4psMphBc2Whkf4uay32wV/6Hdtpt9D408Wjxz5HvshREldjFzU/iw==","signatures":[{"sig":"MEQCIDBsregorhFgdtnJ1iGhRsH19LgP8THxeVKtHR2aLXMQAiAp+STRbIx0gG6jkouR3SVBFaVsOFwYpOvumVDzd4zoYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13150480},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f56c705d5069d618dac74728f9453fede79f4afb","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.130_1787756240936_0.5955502964565313","host":"s3://npm-registry-packages-npm-production"}},"1.2.131":{"name":"@camstack/addon-pipeline","version":"1.2.131","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.131","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"660c953716ee2da7f3f41f99ead25a0b144a04df","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.131.tgz","fileCount":215,"integrity":"sha512-+zwtdqw0VJi31AlRSPHISJ794CD0z6U3FLuEgFrywRu3dwDyCoQYj+UOKnqlEEfAlDCrvpYSa3TnNNDppX+CfQ==","signatures":[{"sig":"MEQCIF198QxwN42hzIqo0o2ek0qkUKOK5gG6Z+8LvLYNEgwXAiAuTtS4R8Cpzd3D38QI2Mv2/35AWcXObhdO86psfZwBAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13192023},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b7504b7c30d5007613d39d6fb7b0fc8c6315271d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.131_1787776985663_0.8257274031109045","host":"s3://npm-registry-packages-npm-production"}},"1.2.132":{"name":"@camstack/addon-pipeline","version":"1.2.132","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.132","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"15a267f368e06961a6cae7be479c943d23c9f47a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.132.tgz","fileCount":215,"integrity":"sha512-6RIO/nOqu7ZJXdgqwIjdXCnNnoDjGQtjBMu9V0DXFql8cH53UOy66tSO3/686Tq6W70FaQ6Y9akIBcEoPr4KnQ==","signatures":[{"sig":"MEUCIQD0/G/PUYb/j0JT2qrPHm8RXvjjuz7Y49XukHalOgcLQwIgIP7RYfK7Xyu3X7arQt5GlhEINvTKN7oxa/H26Oz6Zgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13215415},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f05b66e5b0d57b34cf3b3c0cd1c69aa49c042411","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.132_1787783686927_0.2246935327484112","host":"s3://npm-registry-packages-npm-production"}},"1.2.133":{"name":"@camstack/addon-pipeline","version":"1.2.133","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.133","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"23850b3682e9f91cc2dd865d6212616e5ac6ffc8","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.133.tgz","fileCount":215,"integrity":"sha512-IHyXlRgPZhXixswE8zaTodHqimRPV1ivzXB9+cGGSsAo3cINCJtz3fiWevwNSE+uh10o7aOxhlTbsHm+v+IPzg==","signatures":[{"sig":"MEUCIQDU0/zSWU9Fm4E16BdufdSENoUM4VG9ZjvV3LGFc1Bm2AIgST3NuwFUtPmfRblM7x8r6WsjLA1Y4eEjl9D3hcseUik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13314031},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"57d7cb7e4395bf2a353a373d77e2e5f0a082caa8","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.133_1787823751501_0.9461113336682347","host":"s3://npm-registry-packages-npm-production"}},"1.2.134":{"name":"@camstack/addon-pipeline","version":"1.2.134","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.134","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"cc3f3c39285a01e4420f8a26914bf33e46b5b38d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.134.tgz","fileCount":215,"integrity":"sha512-gVAaYqx3kIaMAMWaA5o6TRgSvo7L+GXxShJYW1F/B4n+BiZWsJZyDZZv+7/PPwpPUrVM8YehNUI2KXhZ07bPig==","signatures":[{"sig":"MEYCIQCqnbNw5WwzzJyB7X2RHBBW5R9R7ujsE10oRV+ntWOPEwIhAKdDn9bdpo5it1crJoojV7PhSJEbyWF3XGL0oE8UNVaa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13321013},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"39484bff1a563a8caa34d08d9394a9578acabdc4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.134_1787830354447_0.7152694087555684","host":"s3://npm-registry-packages-npm-production"}},"1.2.135":{"name":"@camstack/addon-pipeline","version":"1.2.135","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.135","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"6bdfd5b456d408eb15e136268b879df597dbdc56","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.135.tgz","fileCount":215,"integrity":"sha512-BEBScuYjRcPuDCZMta+wY/FXCR6gLkppanPyXdzauatxFt0PsUh9HEU26LcQKugRiO8dFjFtYQiw9Y4bNQcoXw==","signatures":[{"sig":"MEQCIA6BjblhRMeeHtEUrHgH6EdZAzVmuv4vKvOfQ/8JMc+WAiA2++6U0xKpm98pEK3BfN45/G9NNvuLKylMvUsmP17c4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13374032},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9308428b4813b82af9b04d511ef9215f2b40dd44","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.135_1787843328382_0.5095040977749863","host":"s3://npm-registry-packages-npm-production"}},"1.2.136":{"name":"@camstack/addon-pipeline","version":"1.2.136","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.136","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d0cb87cc28b764c0a725cc33aab6ab5160838abc","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.136.tgz","fileCount":215,"integrity":"sha512-rFYoC1N/5xLe24/8pyN5KMtiHHOYucPtIPkDocd6idBCpERITR+GC338xlL2jVuHxV1RtrYwPcp5Df/s69VLSQ==","signatures":[{"sig":"MEYCIQDtY4W1Ce2e8qZf0TjVXNLowUjbr7u5w8zHSIQmN8c5KgIhAKULWWXSshT8Y9i/habmv/7Zb3Go9je7Dn2qryFiC1PH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13397656},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5086c8044737dea8b394acd636bb92a82447bbd4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.136_1787847024581_0.5610933551402157","host":"s3://npm-registry-packages-npm-production"}},"1.2.137":{"name":"@camstack/addon-pipeline","version":"1.2.137","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.137","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"278c2dbdc174a96caee87d3a23de8e42584439bf","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.137.tgz","fileCount":217,"integrity":"sha512-4FHp95VDza85yjvaEUWcDAgyhQdQJdocXjdfGb3wTYP4WFVhQMJL3dJX9IQFhZf7e+BR5R8y2ywQIIdtNiEAeQ==","signatures":[{"sig":"MEUCIAIneYe4oNypBd2wRPWjBKRtPj5Qnrmz45lha9O/FQttAiEAl7fHB4KRSxRCsf7dkyKkt/aY/sNJ2TiE2TZAuXePMKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13446984},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5f30bba84811030115b15fa24d6bae9e8d992e6d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.137_1787862773257_0.6610341295506017","host":"s3://npm-registry-packages-npm-production"}},"1.2.138":{"name":"@camstack/addon-pipeline","version":"1.2.138","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.138","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0c4d168421525e5ae2ef9805b0de5bef36ec2d35","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.138.tgz","fileCount":215,"integrity":"sha512-mg7+D7/UR0lHLPRPOEfsP5mbrptJTOc/rG5lbJSOH6/d7sFXp3PBmKYO6NlHS2oOuRw+eOxbHBjkbPW/1OjiNQ==","signatures":[{"sig":"MEYCIQDrWjrxYotNWVcGdcMl9rSjMMCmSPPFNayiZpZuN9UpVwIhANVRCvYPWIewM1CbO2ar0JbefJAkaUiEQ9V0XNKH+APk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13430368},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1a6b4c7ed3c34a9a190c90701394c13c77cf371d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.138_1787906928697_0.5035296559732423","host":"s3://npm-registry-packages-npm-production"}},"1.2.139":{"name":"@camstack/addon-pipeline","version":"1.2.139","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.139","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5d90f273333085701a775b3366be23fd28b58b41","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.139.tgz","fileCount":215,"integrity":"sha512-WKNyl+0DTa+Gdo0XcmrzpO1bsEUYUNRb+QrijVctgoY3JusdqvT8F/+59wNTGv+MK+nlJ/BW4Oub2mT7DJgknw==","signatures":[{"sig":"MEQCIBGV4SjAe8gdcDIICHLsRX1WCTL7PCMPiAHid1R1PIjQAiAwgzZvjOEiZnRwq4d3J3ref8otiwQNBUihHdoKJiuLjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13436683},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a09820fc9e7ef916b12aa19187a1eb25792009bf","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.139_1787914477723_0.001075627812648694","host":"s3://npm-registry-packages-npm-production"}},"1.2.140":{"name":"@camstack/addon-pipeline","version":"1.2.140","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.140","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d7b3c7ad7903b8d70ddd77ca146010742da2bd44","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.140.tgz","fileCount":215,"integrity":"sha512-DiIzR4zjmpZfk/DqrRxicR2iW6ZNdhwtlNV2VH5nvknv0CV8V6ylGwFkmH8Pd8Piy1lMg1CPLbXoKEfYw9x28w==","signatures":[{"sig":"MEYCIQCKSQiclSgGZlyLnjPtvzjWuuIYadLFCztK4lfydZowPQIhALGEVZX8wS7s0FNbbpDyZ+AT7lPQ2HIEdcv87wulxqLu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13465541},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2b60fb7ddfa415e7dff6ac6c932ba56730cb4f0f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.140_1787930954566_0.11068930694431733","host":"s3://npm-registry-packages-npm-production"}},"1.2.141":{"name":"@camstack/addon-pipeline","version":"1.2.141","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.141","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"11043fd3b9a3086875fee34e88cacb3c6cca9032","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.141.tgz","fileCount":215,"integrity":"sha512-tNoM43CinEdRPnohvPCJYMqBLvoUsnHGrf3ovKNMluw7moAF9ESW0rno/uRra6JA4JBqVtjqynfBbWD00hH5Rw==","signatures":[{"sig":"MEYCIQDgc2ji1TmFzXKRK42BAgZWrj3CKCQdMfUh0LYZ48imIAIhAPSIKb55PITpbCpyyhsf1GlPJzSBO0k2a7iK/HRhDUXP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13479669},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"675de2e27f363b2271d911da864867cd2044064d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.141_1787992051530_0.9719912586884534","host":"s3://npm-registry-packages-npm-production"}},"1.2.142":{"name":"@camstack/addon-pipeline","version":"1.2.142","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.142","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f183ad15168d7cbcdc42e4cbb99f2a1ffda38a0a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.142.tgz","fileCount":215,"integrity":"sha512-RedFYQeRwSwwF+o61yxckHPq3W6hjc9urmW6J604a6PqmnpR59Bf1MJr0oHNnkhnqXp0//EQzsmfxqbxCe9PWg==","signatures":[{"sig":"MEYCIQCcU1lgk/xBqKk2IhfwPZetrf7E5xM4lDrUI/u9cZCLxwIhAJgV9ouv39LSaru/75UmZ0vRWof0htBhlQ3SODLVil4u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13499579},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0a5835600ccd115f7825fc178c50279a284c0276","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.142_1788000769655_0.09441243149770684","host":"s3://npm-registry-packages-npm-production"}},"1.2.143":{"name":"@camstack/addon-pipeline","version":"1.2.143","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.143","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"cd2a5b012bdafff09aa545d28f527855f6fa2927","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.143.tgz","fileCount":215,"integrity":"sha512-F8ZepJju22DQL+RYpMn4GOmMNAgO0ZlpHB1fNuUWYl6pUbM/Oguq5wm6EqeTSiuXwC1Yi7KtU+EEGrMvsJkBgA==","signatures":[{"sig":"MEUCIElPOERgypiwyWW9jroIGZnx6xhtQx6vY+vQZsrLO1qaAiEA9BUrzEqt/CrxMeGl657NDbY1ouxWojl51De8M9ZQicw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13521494},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f7fae36e643e5e498fbb7576d24822ac0918e442","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.143_1788006429521_0.9123973528291118","host":"s3://npm-registry-packages-npm-production"}},"1.2.144":{"name":"@camstack/addon-pipeline","version":"1.2.144","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.144","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a31312c6e8c4f8dfabbfc43c852ea25dd77598a2","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.144.tgz","fileCount":215,"integrity":"sha512-9NUTEXY7UXEWFugFXZSiuiFtyr247q8azNncqyyD8IPXJe2uzKDFfLWBW4lpCwXQx2xitMP6Kdo2VCWhH6HD/Q==","signatures":[{"sig":"MEUCIQCwSZorYqcrhFE7l6pPWpMFtK91Q0UNp0yYzdh3reouLAIgPAKyva7ldpGO4zY8V3mrrTJI+2c1x8IOurX7OG4cQW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13527118},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d783b5fc3183ad961c7982675abbcdfe852050cd","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.144_1788007500010_0.8094130206375005","host":"s3://npm-registry-packages-npm-production"}},"1.2.145":{"name":"@camstack/addon-pipeline","version":"1.2.145","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.145","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"982ec4b100c659f88594ae0b54ebdc7630304173","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.145.tgz","fileCount":215,"integrity":"sha512-btk0it6NN6+6V6HeCXZawObXWBrcb0S4xp40govPJyjaNzSJeaui4+dK9jDcCZDlDwGXYLzVsYkLF2EHThEVaw==","signatures":[{"sig":"MEQCIEOsT97C3NAjVaQRmSmM+YqV0ZTtXAx7zqhtSrAYwbZdAiBckLOHwqrej6pw4FV4tt0PkP1CfxbPVhcFgq28lL9hYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13569158},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b918927c945a9acc2962db156ff46c76f333d03b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.145_1788017993126_0.8583322025474698","host":"s3://npm-registry-packages-npm-production"}},"1.2.146":{"name":"@camstack/addon-pipeline","version":"1.2.146","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.146","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d89a5cc324fd4c565f42e41292aa7ade1a842fcd","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.146.tgz","fileCount":217,"integrity":"sha512-xqsMADdUJ1JuJS0p6DdluEe2nPW9XXnuJ4Ayza78uc39BGQa4OtkWynj2JcRN8fKwbq3Mw1pzHgDrtpFAn/vuA==","signatures":[{"sig":"MEQCIDCUs5HHDihy7v9oqYFabXvaM3qN2kFMHTs2wsRRGVnCAiAHvGKYpWm5qvYIxnlL13twxXMEkYg7oZ78RO2mwbPhZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13570775},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f6c8cda79c5f1d1b0562f5ddaaa31f03adabc46f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.146_1788024673883_0.24139466467206128","host":"s3://npm-registry-packages-npm-production"}},"1.2.148":{"name":"@camstack/addon-pipeline","version":"1.2.148","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.148","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"6f17a8b43d17b4d9d8fb41e3e4b5d7d35d885d4e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.148.tgz","fileCount":217,"integrity":"sha512-kD1pZ5MN4WxS+iTFMgQYyOe0n5R9kbZA77Ac+jmwFpvSU/9JXUrKzXOQygmXjRL37dJtTaw9b2bb/p5qdArzIA==","signatures":[{"sig":"MEUCIQDjIT9jAxpNDz+XMeQK9lj/0hpUHCKN/FYtDjXxOLbP7gIgF62OzNJ82DUpivoYS82P904Cd4Vj2rgoUanC12L0R2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13602551},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"90ea382f806079fde619348ae596f920b9fa3950","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.148_1788038771660_0.11832944839441129","host":"s3://npm-registry-packages-npm-production"}},"1.2.149":{"name":"@camstack/addon-pipeline","version":"1.2.149","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.149","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"9e45edbde34366780f27a5ceaa2d9232e055e455","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.149.tgz","fileCount":217,"integrity":"sha512-v1kFKxyNDRjOo8J+m/WCeSNYgn34E0jzqdYV3YphlEnYxQ5/YjpcyuAkxdJffIsf3FQHkMjWpNx+DyxYYGvTMw==","signatures":[{"sig":"MEUCIQCo6+VuC94oyfMOG0woSESdhqTzmC1e5B3U2ZtCp2JxjQIgV0aKgyVBBU6c2wO/iT2qwupcwJEgYl93+UPko8pl6RE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13602551},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"7474ee94271c55b901ed527b06014e9ab1952dbf","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.149_1788042884337_0.7894397706500238","host":"s3://npm-registry-packages-npm-production"}},"1.2.151":{"name":"@camstack/addon-pipeline","version":"1.2.151","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.151","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"9d77409e80a2ae09bd0c0f472c435c48a0e56520","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.151.tgz","fileCount":217,"integrity":"sha512-YKboHQNnjF+EvqGuFV6qEigzfErQv1mZxBrEUMHw7/qSy9DJ9yFBCMpeRBztL1qcnMFpHzj1qvqXbb5xqJ044Q==","signatures":[{"sig":"MEUCIQDdo0yQm8Sa23pGq7GRwQhxVzLmwaNUDe3rS4hCUyH9zAIgB0cPYY7arxlmWRq1aekCeRpLPrnunYy3STKFoFuwFGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13748242},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fac08a46451b1c8bc081cb57d51cce19a2dbdeaf","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.151_1788084074506_0.058555311883373706","host":"s3://npm-registry-packages-npm-production"}},"1.2.152":{"name":"@camstack/addon-pipeline","version":"1.2.152","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.152","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b0a77181a2e18ffd116c5c805e06c35e44f6fe98","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.152.tgz","fileCount":217,"integrity":"sha512-Jnqjf3jG49eLjw7U/RAWmn3nmzfjZ1FQbCkZGh7GOhZKM+HaDbYs0qVf4pbABq6T/aIaol6Goh4aKzWb/yj1iQ==","signatures":[{"sig":"MEQCICk96BAzFj805oqhAx23Utvv/ucc/ZfjR+tB6EHlFew9AiAgrgAETjJCzxIFGdQGwbbnbDY9tZuIUHXii2CXLiBx1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13764817},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"df267e2982b2c31ae62f07782295bcefc6de799a","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.152_1788104114314_0.8634272389052804","host":"s3://npm-registry-packages-npm-production"}},"1.2.153":{"name":"@camstack/addon-pipeline","version":"1.2.153","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.153","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"7c839ecd555148253b7ebe8366b71c8f60c47b49","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.153.tgz","fileCount":217,"integrity":"sha512-frUfNYZcZ2KQkHVZM1MqQ8U+Za+I8/mdDvZzfYlXoNqpSXCBYQcEGvLh27hrgMUMij++O8hbhT+Myxp5F0JoWQ==","signatures":[{"sig":"MEUCIQCbKcYWBmpSTWl1BCAQDUv04p0qK+Dla6NdIzHMoH6+QQIgKaF0cKT6kjP121lgNo/kNFqKSbDX2wxBhPHEqpZ/p/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13773036},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bcb327b888e8ec49cbce6dfe32cf1dbd3f19ec23","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.153_1788113120611_0.343605561239946","host":"s3://npm-registry-packages-npm-production"}},"1.2.154":{"name":"@camstack/addon-pipeline","version":"1.2.154","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.154","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"02b2cfdfcb021d2b19dbed943909f6148c6f2a91","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.154.tgz","fileCount":217,"integrity":"sha512-Sv2Dsr/nV8qlC/O9EukbXb6rpWE8eZa1A568uPQm/tN5jc7ggGHL6+kQYEn8JcNlYmS6DHUmMK2F6KHpX/e7HA==","signatures":[{"sig":"MEYCIQCR/sl53ngLIygwV/RsdPLqGAjiW1E4JfLBOdnza6YGpAIhAK9sEUSotd1eV2CW8GgH7vmBoXHu5KaRwgRIgTolhvVL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13779465},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1ba9ef28160d5d6d7512669b7c421620f4b09e73","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.154_1788119782098_0.42549552008476677","host":"s3://npm-registry-packages-npm-production"}},"1.2.155":{"name":"@camstack/addon-pipeline","version":"1.2.155","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.155","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5e1301053dd4bca861176b0fabfc3c37a38744c7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.155.tgz","fileCount":217,"integrity":"sha512-sLKRDevjKUalfUXVIVfXWw7KnbE2tS43danrDHLGw0OKppugviOhQplD4Z5biXO6KU6TmhyADyUz36GKqU16Ug==","signatures":[{"sig":"MEQCIBomXLPLU0HYHAqZ1nzg3vXyEB+EGq00GGAQEMevYqCsAiBijMXVLOr5Vs1TI7SCvYk1BdD895+qEtR43j8fbrQf1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13839802},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"09e7f21e1406ef2855ddaeab025ce9158f0e1078","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.155_1788168169682_0.5203598014950983","host":"s3://npm-registry-packages-npm-production"}},"1.2.156":{"name":"@camstack/addon-pipeline","version":"1.2.156","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.156","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"dc5ede74d273f8f4540e716ee8122648af40d21e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.156.tgz","fileCount":217,"integrity":"sha512-ap/uAbdAGEdAdIXYgwHihM/hh1Ege5pi3+glBpnoZftO2cNYWQjd7ASbTr4ASZ/r9V60eHsMTwfLuvlx7Go06A==","signatures":[{"sig":"MEUCIQCdXBFKJHpu+iO6C4IRum4i03izdEzTrjPALrdBXW1k8wIgYCmdFYEj51tHxeZw4S3yeyoHnHR1v7v7RuavboYYXJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13844476},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f0e80331f33bfc71c9b400a40d7ea5e95872cba3","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.156_1788186214536_0.42113092622031245","host":"s3://npm-registry-packages-npm-production"}},"1.2.159":{"name":"@camstack/addon-pipeline","version":"1.2.159","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.159","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"3dd16d5dc1556cd83f7e69cb4e46ef612df0271d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.159.tgz","fileCount":217,"integrity":"sha512-VzCAbh4sLhIdz1zdQpZ9VBggQCBHcYxP1AxBIOdZeV/kE2WeXlf4qkcC598ytlVQI+lXJqBRMltodOLrcWEiig==","signatures":[{"sig":"MEYCIQDr3p2y9y0XphZyD/EQC++rOsRvGKg2ixu8uLXsDF9T1gIhAPkJIjWV2Y0TpJ4EMaj6GT64RbpJmibUiU4tNVusBon3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13889168},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a60c9e6dc373900125bb532fd10bd38af36bf0ab","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.159_1788262266093_0.48729052240660375","host":"s3://npm-registry-packages-npm-production"}},"1.2.160":{"name":"@camstack/addon-pipeline","version":"1.2.160","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.160","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"527254c753e79b49da16f3ec80eec0b81638f62e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.160.tgz","fileCount":217,"integrity":"sha512-dEk6OqQ35DZTly8jYNPdS0hiecZ7xWbYvaU1cLOzdLqH4EzGCEW4YampGpmbKJH/S5PQVO8U3o4g+ocxntIxvw==","signatures":[{"sig":"MEUCIEHfg8xA0TUueUo3Oq0GrvwoWCVoPUBTP0viazzYfCdNAiEAlQ+AYQ+5+Z8Se/h43DAeeKVb65URvV5LxyHMkaiZA4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13885822},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4df6e1ed34b94073554b6e9ef981fa2148f6536f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.160_1788271224918_0.18899174480297898","host":"s3://npm-registry-packages-npm-production"}},"1.2.161":{"name":"@camstack/addon-pipeline","version":"1.2.161","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.161","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"b5a6034a6a46227ffe8f936ddc4b590330beddcf","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.161.tgz","fileCount":217,"integrity":"sha512-CFGoWQs1vYARPxSaCD39p8CTnm2ZJkUH8+nIB2ppMT+fUJ40W7L5mBaZs0Deqltkao7c/aUiFhjNFjMxE6iptw==","signatures":[{"sig":"MEUCID/t5r2sV/GreUgH17+xfkP6SC5P6Vt5fk3IvFWF71+DAiEA+jONj5kJ7KXLeBo+rRQRf88FkJDd9FvPs1h87cd2dU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13886214},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"67f75d8a4d3de2fa63809844ef8020a1bf2429a4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.161_1788280690914_0.965748375334567","host":"s3://npm-registry-packages-npm-production"}},"1.2.162":{"name":"@camstack/addon-pipeline","version":"1.2.162","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.162","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"841909449f6b7a1331b327a6c59b36b09c6ac2e9","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.162.tgz","fileCount":217,"integrity":"sha512-DrqnYj3Kcwi63keUQGNxbuB5cxVfOb/1fHU4fiFZ5wSkrRNnS8Yep6f8CZk2GBn9exyqgzM73nhBn/t+iP93hA==","signatures":[{"sig":"MEYCIQCtVfgrx3lxKdTR15O3SzErvEiOVPFt+qjCjO05E3pI2AIhAPgGrKCGIi5gJX/6illX2F4HH4uIJTHGU9Rb01/7mghy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13902830},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5b22c33ef67b2de51ad2fd13e2cfbda737c4da6f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.162_1788293338800_0.7358405804777162","host":"s3://npm-registry-packages-npm-production"}},"1.2.163":{"name":"@camstack/addon-pipeline","version":"1.2.163","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.163","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"bf5abc7c470b1f18d27187570a2bea5f814719b8","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.163.tgz","fileCount":217,"integrity":"sha512-i76TmOBc0mL6vh9L9DPV70ST7AkoBdp8Q/oQvxetGi6Iqwek4K3tKD3Mcr04HsU+T6WLTrlcMGIBb1++XjT2AA==","signatures":[{"sig":"MEUCIGFK189OLQja6lyJTaB3fAVGQnU5oxQ907dKfm8NioXaAiEAuK0kUPYnS2TCkwtEWXAcR8oF+WcumkvPEXa5nEV6vRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13902830},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6aafb023bbeba64af0fbfb1e2ae03551c7e85f75","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.163_1788341800546_0.7729525762664953","host":"s3://npm-registry-packages-npm-production"}},"1.2.164":{"name":"@camstack/addon-pipeline","version":"1.2.164","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.164","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e94b89bda54428381b2840e34d30a2cc00206488","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.164.tgz","fileCount":217,"integrity":"sha512-GEZQvc8GyIyOrjYJRFxz/eS2FJLqzWmpzZxURIVWITfI6k8R1gwaWR2+GV/bSkrPqBDmmt4URNgQCb1OGOu7cA==","signatures":[{"sig":"MEQCIB5Mts45Ny+ewhrn4mGZQr5D7TPBgYtxBJkBKHj0lslXAiB2noyldUBNS+wcTo7GLh3uwvvwOp0yak1k9QkDRED2sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13902830},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e779aceafd432d8d85c49639fed92b96fc457a2e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.164_1788366693487_0.05531236418211227","host":"s3://npm-registry-packages-npm-production"}},"1.2.165":{"name":"@camstack/addon-pipeline","version":"1.2.165","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.165","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"bf3b85cb7b506eeaf51259e000960198540e3738","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.165.tgz","fileCount":217,"integrity":"sha512-NmdVVT3LoVkI+rQeSOTfxn/JpZ6tLlJHGzH5slndj3t1WEQjAENagATEYQnIxtFu07Hp3iOforRHRCKeC/KTBg==","signatures":[{"sig":"MEQCIEv0xkjTUXKeaG2xf4unCJ1daN5J3Xpm0a7Hwh3pPSWfAiBVB3US2jJoYEf9kaMytFNYgcngA2Qnm3Wnutr3AWnYRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13902830},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9014ad58e33d138ef9f7af39a4b81d536d1b76ac","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.165_1788368590281_0.9502204852652754","host":"s3://npm-registry-packages-npm-production"}},"1.2.166":{"name":"@camstack/addon-pipeline","version":"1.2.166","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.166","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"be2859a64a46d4b8fe8369de335ae307b18b3d87","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.166.tgz","fileCount":217,"integrity":"sha512-jzU7abZ8Usjh4Cngol+ksXWHmSK9jwukjYodkgBHs6UEnrPEgCi1flIJT1e1CThEXRlPike/C2+7VJ5DFHsNnQ==","signatures":[{"sig":"MEUCIQCEhYiMsOu0yykdNQhIEHzBX6OruEC4OjzHXs8e6lbcwAIgNbyEXvGSz/gC5oWSEF7FVFILNgjVTG83XI2io/mn3jU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13923590},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b5df2091704da43084486488309ff5b23adbada3","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.166_1788374394537_0.6495908926743119","host":"s3://npm-registry-packages-npm-production"}},"1.2.167":{"name":"@camstack/addon-pipeline","version":"1.2.167","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.167","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"d78033931127dc817c5ece43ad6ce956c70c14f3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.167.tgz","fileCount":217,"integrity":"sha512-1mN2n8xGMfZW5lRZKoqKBbDtM9gH6PLHZ58mBxxVBBHso5OShDK3O1/sOyjXGQfwqoi7+01JENDVpiS+YolqaQ==","signatures":[{"sig":"MEQCIB49U2+HIZnzT595bFJ6RJcGrxTIq8Ebk9uGvZQW2XVmAiBPi2WY976HKlEbmPcvOj88hTZoda2oFLFimq0HUdNpIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13923711},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f7a6516dbfa2fd49a18d8b6d004a222e14f44f9d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.167_1788383822550_0.4668365612036789","host":"s3://npm-registry-packages-npm-production"}},"1.2.168":{"name":"@camstack/addon-pipeline","version":"1.2.168","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.168","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"864f9cf0c46036e27b1a3405fb5830ffa62ce8b0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.168.tgz","fileCount":217,"integrity":"sha512-3F/aUIm8aiZSeyqI5kfgDIz03LkXHAVtQ4Kvbuijf2MDURAYvIXxmGxWN+T7lVnD7jdRiT7iQbFzO3FRoR1KjQ==","signatures":[{"sig":"MEQCIEXlMSVurC0HmdY087AYzugmElvhL2m4TNlytk0iqZGEAiBDdONeAjURpW2bxzFxvqYFhkPGPaVSo76CFvyqN3Wd1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13927029},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"177e819dfd11682ec7e923f251e3849e8d919e21","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.168_1788429354411_0.12293476926492408","host":"s3://npm-registry-packages-npm-production"}},"1.2.169":{"name":"@camstack/addon-pipeline","version":"1.2.169","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.169","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"52eeea2888cfb74a3745aeebfcab859cbaff51f9","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.169.tgz","fileCount":217,"integrity":"sha512-sw7ZIqe7H9shUwxJgYlbz7gjQN5Wp1A/AXRZEQKx6m6reHUgPPX3909HjCFRtDz3IZQDyleLq+a1F0XeSp6oow==","signatures":[{"sig":"MEQCIErsk2Tnh0zV1Gd3oc9+ahs7c9z/kXlXPdqBFM44ftORAiAmrYQc9RPMJWYgQ9vhY94FygK9twgm5JYvbNSssUwCeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13926147},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"20f4093f018f1fd43d23944105a5dac5cfca3cb7","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.169_1788461576433_0.3757999758967352","host":"s3://npm-registry-packages-npm-production"}},"1.2.170":{"name":"@camstack/addon-pipeline","version":"1.2.170","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.170","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0a64c04abe8af9a55a026058b12591a109af0aac","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.170.tgz","fileCount":217,"integrity":"sha512-/w7B0pnyP8cMRk6T/LYFUD882Zn/hfkStvtx42Z8lo5lJAYG0HjyAYUfDXBvCtVk0Wiv9U801LJH1+D6SONmnQ==","signatures":[{"sig":"MEUCIB0XX5Fhh0Fzr6SaSbypHFANzpiNOBN/+cMnCKUbbbdoAiEAiWf3xTE0wSz0ndc+j27X8jVS6ImAF3ZvZ4lxJU5Uh3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13927541},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d35f56915b60ca93a47eecaab714c8535197007b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.170_1788469219867_0.6143958452014207","host":"s3://npm-registry-packages-npm-production"}},"1.2.171":{"name":"@camstack/addon-pipeline","version":"1.2.171","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.171","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"633e0b40b704cc1024af4189f5339a0d9ae20d29","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.171.tgz","fileCount":217,"integrity":"sha512-KDez6VEPKljfCph47/M0YgQV6oFL2cR1fIbOcb8FVNGDaVonDVuoWVFLDTSLgdjYBnWx4QKd3m9yxHQ51MJ6eA==","signatures":[{"sig":"MEQCIBlebbsyZo/+okWv9esd9OFUHgZ3n/JvVfA8nAapgCCrAiBqenwqFbLzWwv5OtbgRgR4eza1MTB9+s5ZDDNJJm729g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13930265},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d068c84832684a96170843d815d8f4dc44aee867","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.171_1788474054042_0.9260796184287556","host":"s3://npm-registry-packages-npm-production"}},"1.2.172":{"name":"@camstack/addon-pipeline","version":"1.2.172","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.172","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"e0d15fb92fd7d0ed91af0ef78fd188eb88dc8efe","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.172.tgz","fileCount":217,"integrity":"sha512-D0P5X94gyHRiHE6fxYrv7gAMhaiWY1cA6sxnWKPepRWl9DLwuvxp/5EQOI9WveEbesRovcxH/J6diyqgDmoiWA==","signatures":[{"sig":"MEQCIEyj7nh8m88Ol985fZ6uJbLCBAP+YVvDenWGx2Tquj+wAiAonpBYD2MlD1gaGyioxvkS2tCQgGhgff20J7/EvfQKZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13962722},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"667c9e34f3a32e387786843c46e60e5639ad0322","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library) and operator-exported video clips, in separate subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), and per-export expiry + delete-after-download — and no media-class sweep may attach to either. Exactly ONE location (singleton). Not part of the system backup: media locations are operator-managed.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.172_1788518834010_0.21479958375318553","host":"s3://npm-registry-packages-npm-production"}},"1.2.173":{"name":"@camstack/addon-pipeline","version":"1.2.173","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.173","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"f2248731beee530c9ef9fa0b8b35eefe26b23e45","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.173.tgz","fileCount":217,"integrity":"sha512-NMmRNKHsdGy5QOp97b+tXDMpIbxpDxH4QlfSNcvknU3nPJLv/dXgzgFIp8Kj/5R7OfqtA878M3B5VaYMR8uv+g==","signatures":[{"sig":"MEUCIAEWrv/ooRzpFfu2MP0bimkUlyOZyAx7u2h6dXwARDFmAiEAgX9Xn49jx5n3q888bf463mFFrT5TkY6nBw8pya/NAsA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13963638},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0ed0a8dccde7682889af7091855f9a8c7e7b16a0","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.173_1788531476141_0.8621315568286576","host":"s3://npm-registry-packages-npm-production"}},"1.2.174":{"name":"@camstack/addon-pipeline","version":"1.2.174","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.174","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"059f29e92a84e7e4886d87504efc23f39ae9ff09","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.174.tgz","fileCount":217,"integrity":"sha512-y/zevbMSZ4T/g9T87PGE9WRDX2vQNmHUGMNckLtEHDWzpjnfuNcgN7ABopmeprKCHdMOqS5UeGNiEZ3N159vfw==","signatures":[{"sig":"MEQCIH5CAlzGnq6q1gWmHZgMlW4jB8AHJvAmAUdp6cPBpRy4AiB2bXemVtewFIdZqCTetpjaZJdkRZbvVpT4Pe+h0X6QnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13965652},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"748c7c9a8965da0cce894e37f41a5eb5511221ce","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.174_1788537536796_0.7799686442183358","host":"s3://npm-registry-packages-npm-production"}},"1.2.175":{"name":"@camstack/addon-pipeline","version":"1.2.175","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.175","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"339256aa891262523357a4e7137b2fae5130bb08","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.175.tgz","fileCount":217,"integrity":"sha512-Rhazr3fiHECE08I9ji0aqr158KQAhwgH3rucWm3QCRWFCBFq+m4/fva6RS2mbr60HVAYuFXe+I+wxuxX5Y2oRA==","signatures":[{"sig":"MEYCIQD3LlrOwBvtdpqgP4mGOVT6h7o8mBgbrp3PaJtXydWTKwIhANQPe62sHtTY28vsIyx+UBmcXmIHsAL7/CDGHyOolxeI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13973548},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d63a7946a4ae0e87c7b174d2df0d2706a221f537","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.175_1788551045689_0.3284438465484063","host":"s3://npm-registry-packages-npm-production"}},"1.2.176":{"name":"@camstack/addon-pipeline","version":"1.2.176","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.176","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0d50ee4506568c6e4984b0df4f6a82a9eb39fd14","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.176.tgz","fileCount":217,"integrity":"sha512-/q130ZFROljdqFxjQxc7KaKutPpxLX0ByOlWHaCimqrGiuEBqbvYfLEmw0lg7OsMwmLYXKsc9jwwdTgTs0opOg==","signatures":[{"sig":"MEUCIQDjkOu2fBIquZ9eckPnJDVfsXmd7LX9hwPU+uPIzyD3rQIgD7gaKiqOJ4sG/+x1ton0luL8xLN4ppnfzMyOm7Xucm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13973618},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"56b28b6d5c1f4e667950d04dadbcb3031250deeb","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.176_1788558077239_0.4589084654202973","host":"s3://npm-registry-packages-npm-production"}},"1.2.177":{"name":"@camstack/addon-pipeline","version":"1.2.177","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.177","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"8b619da8da5cab944210c609d4a0849841ebec0d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.177.tgz","fileCount":217,"integrity":"sha512-AQpE2icYQ0TRN03qaDL+H4edqqsibjkEB64kc2y9LfhWUM+iJjIAyguMtFkzeYFDVZIjgNEA/1uT5wWCSHh9eg==","signatures":[{"sig":"MEYCIQCkdg2XlITkn2Gbar3BrLUTwZ9CPws5bL19h67tKTCAgQIhAM3OmhDh3WKsEBvrOOuHkI7xDut0WPJPaurwZe/meXP0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13973618},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fa93bfb05402708d377ac42404bf891742ae8117","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.177_1788586255897_0.529148911684624","host":"s3://npm-registry-packages-npm-production"}},"1.2.178":{"name":"@camstack/addon-pipeline","version":"1.2.178","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.178","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"46a4a41f52bd7849f43ad6f43a42c86b6f8f0f04","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.178.tgz","fileCount":219,"integrity":"sha512-1a30Rb+F6IGU3KOL86cbxGTtZHbnvjv/UYDiVVTzYiMS+DauIduMt8oMlbjCHKBDlwHNagu0K+ILitVyhO94iQ==","signatures":[{"sig":"MEUCIQCEV78CioGWBp4/l0jBvilTZ/c91AkVrSj7vfLUq6QpbwIgXR7BzJGUiebrYUgzZSJuyEvSeRpFKi6A5VIntDgkK5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14026968},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2d4238ef343978eb84b5f9d8e7f5af814d3ec40b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.178_1788594842009_0.8779537823213936","host":"s3://npm-registry-packages-npm-production"}},"1.2.179":{"name":"@camstack/addon-pipeline","version":"1.2.179","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.179","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5bbf0107082cdd8f906c674207faea408d4ca58b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.179.tgz","fileCount":219,"integrity":"sha512-Q0+HZfNsl+kARDzA5DzW9jZCl4w8QfdaAHPFqbXez1GMu8XCrBYb+2PJssHbbz3w1iJEbTWP848B2TAMKn8J3w==","signatures":[{"sig":"MEQCIDrAMDQi6FIa4BqrxF7/Mgrb87lT3DXTfFwForlDzW1/AiAyMUtQRVGstkMWlKbFL2mVph4qRiEwaMPv3QXNp8Cijg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14031398},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5fcc6fb9cf3034ddf4bdfe9b6fef75087e4826ec","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.179_1788613235398_0.9296379386331355","host":"s3://npm-registry-packages-npm-production"}},"1.2.180":{"name":"@camstack/addon-pipeline","version":"1.2.180","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.180","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"a7174180f926eb1d1b324425b5647e3204a8ee44","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.180.tgz","fileCount":219,"integrity":"sha512-tX/AJM3vcXvDHPF7iYjm9oiHv0nGO4TriGvO4Vg13FjL3hEbsPzgjQTPsObok5Fjk6SJD+1NqEWJTwDMhZRogA==","signatures":[{"sig":"MEUCIQD3UQJN6j9MJ6SpUnrbSBwPdRsXm27+PM9i/pdbG2QrfgIgfMBpq4l93cHogWMyxVaA/RSr3YEtVvC0gQHJlmTQImc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14031786},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"537c2bda337e96a577c1a643bcd42719e317b9e6","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.180_1788619091372_0.5443659091638073","host":"s3://npm-registry-packages-npm-production"}},"1.2.181":{"name":"@camstack/addon-pipeline","version":"1.2.181","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.181","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"9225588259566a26f45a840cd89e308f8c8760cf","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.181.tgz","fileCount":219,"integrity":"sha512-5s2E0GzBDhqGngIBDZN4DEViLUaD/Vx8mZ277NbWPNWctZl4orZN6UzJUjqYpA5+dOWxHmhbvwmaXxnwvINfJQ==","signatures":[{"sig":"MEUCIFNz6Ku6lLfIoA17ZBdQ/gGOFoNvMe/Ar0pwJMvnma+IAiEA2rxhYR90m7hJSXz86cS2lYFL5NJ5LDbGTCpEbTWzBH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14046560},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"eb0ce2487af9adaa02b386739cc470de834b1183","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.181_1788622594630_0.7802212217562807","host":"s3://npm-registry-packages-npm-production"}},"1.2.182":{"name":"@camstack/addon-pipeline","version":"1.2.182","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.182","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5c0603686b256cab56cc181b4033f5758067b892","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.182.tgz","fileCount":219,"integrity":"sha512-sXML9EznYNfwYUhfLnU2Rgvrv1Jghhzv5AzoqT14glvDV5+2geLB5f/5K+wXZX3jN8SCowrsIlvhjrL53PfPZw==","signatures":[{"sig":"MEYCIQDmoaArzE1RkOXXgxsgtM74FKw8LlWQExpZc1blgPuG0AIhAL1BUoHDzN8bTJ2JM1yNc3n/J3H6mV7/SnbI6GYvRA0Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14052819},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bce35ea879aaa1090413e501d0cc8e166ff08bef","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.182_1788624807311_0.24366378640530906","host":"s3://npm-registry-packages-npm-production"}},"1.2.183":{"name":"@camstack/addon-pipeline","version":"1.2.183","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.183","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"0dd4f929a99c04cc19dde380eb6e051dbc7a542b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.183.tgz","fileCount":219,"integrity":"sha512-PXjRvnV9kyNavPObfMeY6IXsfQQjQWt5wiL1kFHgzS0Prk2z+oxBjS/lpzplEngq7fu9PHHjrjA7TXCFHtacqQ==","signatures":[{"sig":"MEQCIBZ/GoU+l+HDnDYP2vwH++PbUEmrFIWG+7+rWnwZ9y1PAiBqH/Y03J/JuMnvjUuIEl/F7PWi3mtfdV3JerCji6n2JQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14053635},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"69c2ab1f4974ec21d7a7165ccdfac2568a78c6c0","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.183_1788628056796_0.22061659223858188","host":"s3://npm-registry-packages-npm-production"}},"1.2.184":{"name":"@camstack/addon-pipeline","version":"1.2.184","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.184","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"5ca4a144494341cf847f707f21da0f6edf4b8440","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.184.tgz","fileCount":219,"integrity":"sha512-chTHtRtRG3zllFXrFmmZAerA7yv0QLD+xvZNu/DXNU7Elmr/b6E+2WWaeeLw7LgFjfhlFMYzuVOMcKAAOpK1Eg==","signatures":[{"sig":"MEUCIHilSAUw6+jYI3EClZAqEle66OH+rjtYrAx+Gn627KB9AiEAg/qEqjcWnyWFgSdymv9BYink272fpRhCNgOajvhKLcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14053099},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9c3da09081fa2dbdd942b39b9aa4247e69b1bd50","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.184_1788630683571_0.4722304529877501","host":"s3://npm-registry-packages-npm-production"}},"1.2.185":{"name":"@camstack/addon-pipeline","version":"1.2.185","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.185","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"419620819968a7250242b8a46f73b9a0bc6e06f4","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.185.tgz","fileCount":219,"integrity":"sha512-T0GPYmFUWz0z7fsrrm08PJHlvHnJbXL3v2LRrhP22glL4RCexSek2GB4CxEKFXxU08D6IovtHtnKhc+6HeVpWw==","signatures":[{"sig":"MEUCIHLk3Wg6L3kuLWHHRK5+ULz4l8r+CIpmYoRAAgaJZAa5AiEAgqdcdhW+4NPBPB2XEZJa6OkXph05krE3ZkS+Sv3qYjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14054933},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"cb8c577e3d830aa0da943188b5b89bece24ca2da","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.185_1788639097147_0.7958775622725294","host":"s3://npm-registry-packages-npm-production"}},"1.2.186":{"name":"@camstack/addon-pipeline","version":"1.2.186","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.186","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"f52cd3e43312670f3c0fab322a274d62c866f2fd","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.186.tgz","fileCount":219,"integrity":"sha512-dKIA9Pff7SDrhNO4Cum6NguXMtZm7NORk3NQcpdya9iK1beeCl5B+J4veqRUiC2Y0yitwo9DW+1sJ/suPBTVWA==","signatures":[{"sig":"MEYCIQCnIU8i1qROnL9uYzDu5GLXcDba8UTLJW3mCFCoe/UdegIhAPNPT9JwdFH/ujDbuUTFHEo+0/vJGRdukWGU5dC33b17","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14054703},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d144a1e320373a07687d142c1736f898e54d3599","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.186_1788644652967_0.18776688073588765","host":"s3://npm-registry-packages-npm-production"}},"1.2.187":{"name":"@camstack/addon-pipeline","version":"1.2.187","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.187","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"25ad7d3a20b16ddb97d1d926cec166bbb353ab28","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.187.tgz","fileCount":219,"integrity":"sha512-98yvK72rbYPuBbUkmeDhgGMeaLBYm36xdYmqnLzEw924kaX3czG96u0CK0NDz2I5LFxDVxBMGXNATfisd+KKLg==","signatures":[{"sig":"MEQCIFS4ETamwZprsfvzLyRYECZyT5m5mg9zPxgi1i5VEo2oAiBZ262WuH6js7HSxkM2BeE3MtfNtWW+gLmS8yK7lbEuSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14068996},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"81e95e95c901f7280bfd0aea5f62a6a45831a0e7","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.187_1788650374626_0.5799662902384142","host":"s3://npm-registry-packages-npm-production"}},"1.2.188":{"name":"@camstack/addon-pipeline","version":"1.2.188","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.188","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"f7238a639eff7ab8e360bff3dda83187eee4dd31","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.188.tgz","fileCount":219,"integrity":"sha512-qGNux/F4LDxdgQX4djs/tXEV+TqendCM6PaETlhw0a9lz32YvQMBlt3aqjwYtCsxE/NwvDjqmz5dXkf2Ry6GkQ==","signatures":[{"sig":"MEUCIC89kKdTM0/7FYrET0ShCQpoAv8acXyxUgg+8Xz8yZY3AiEAnhJw4lVQEp5WRoae8V7NLEAlJd2X4O2adKX0TW/EGko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14074325},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ea697e459d603441ab89e79931ae7db1e63cba62","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.188_1788672894502_0.12370558751404004","host":"s3://npm-registry-packages-npm-production"}},"1.2.189":{"name":"@camstack/addon-pipeline","version":"1.2.189","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.189","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"713f886c583cdd33c5528d607b9c33be2ae2011e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.189.tgz","fileCount":219,"integrity":"sha512-cAT9x8xde+mxYyYR4mIA3S9hehd7B4QOM+Z5JHqXdmiir4S1R0XdSgfP3iduLfPixSNmaONu65xlZS8VMlqQCQ==","signatures":[{"sig":"MEUCIQDribugYO3tZP6mcBvibN5/MyP1hN6IBL6QMw1kXofmFgIgbV3b1VqIycvcVRLDDIhWk6VP4pgw3P5LNNm2VeWaD9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14077017},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0f41a5657839dbd7b9e9a26d0860ec857ec12465","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.189_1788677225046_0.5118189419244978","host":"s3://npm-registry-packages-npm-production"}},"1.2.190":{"name":"@camstack/addon-pipeline","version":"1.2.190","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.190","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"833ddd6eed677fe304bbf02d016a255cb07f8295","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.190.tgz","fileCount":131,"integrity":"sha512-SkVPDCUbwZfKhAU1EijNowGgTXldeAuSODYqovdiL/rmyxApQb/8iYfnALsfmX75It5/BF//Qi5xGYfCLVRWjA==","signatures":[{"sig":"MEUCICWAvpfXaWJo9v29aaovNGyxP1xbjdMpyGLXDZqnxe2lAiEAv/FM5J3KyTJ/h5oFAhug6hNkaulBl7SDFJl2YxQ9my4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12885344},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.190_1788682850716_0.08597133987838701","host":"s3://npm-registry-packages-npm-production"}},"1.2.191":{"name":"@camstack/addon-pipeline","version":"1.2.191","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.191","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"82fa7b789329cc7e08bec87ed9bda910e59405aa","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.191.tgz","fileCount":131,"integrity":"sha512-vtZbXfXEj2omy72yGJILg3x4p+UstGj2UJfvK4295kfgn++/Nvgsd/gbGfQnGiVzhLJhbY0FYFALnM6om+N+rg==","signatures":[{"sig":"MEUCIQCLlS4Pm5ZpbMp6NCnvNOYlwNLlNtSiMSetwbxqTmaZWwIgGfsAcHkTPpD4yf8Odj7TSV2x25NUBJvSClF7bqp+tcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12911667},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.191_1788687425134_0.7045898193044169","host":"s3://npm-registry-packages-npm-production"}},"1.2.192":{"name":"@camstack/addon-pipeline","version":"1.2.192","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.192","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"ba690f53b6f4a36de3700b17582433b7c22728ea","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.192.tgz","fileCount":131,"integrity":"sha512-0GMg1EUXaaNMrwJDLE5NDxuch1nTy6jrWkvQDSHBc/Xi+uRWLerrmw61fMs3pofX7VX8BO3QJWUD3heojOxvXw==","signatures":[{"sig":"MEUCIQDUtluevEYORP2qpuZxsyYv8rIOP8PtryIA/oQiSBYD9gIgNNm/AVcIRni7bzkFK6NUNiTE/IpNakuNKLAjuCpO8Ow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12915149},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.192_1788696985064_0.33157645790454415","host":"s3://npm-registry-packages-npm-production"}},"1.2.193":{"name":"@camstack/addon-pipeline","version":"1.2.193","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.193","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"380e5ff4b94ebcfef05c4cedadc1441447f2ebd2","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.193.tgz","fileCount":131,"integrity":"sha512-J4QmOfvzFkf04A5wrptSiXhAQfJhCXSUhmWE+dmwnXq7RJeBjF9WCnnWEg1zyf2j2y3+M9I4OFZ91iKNGWcLnw==","signatures":[{"sig":"MEQCIE4CzqDQL0qa5fXo8Btzc6xtrnn2PCofvGeMwgnd5KRsAiBWvKe1KK/XlkR/9snMFEIonLJFfZoSedkD5jOhGiK+lA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12958121},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.193_1788717547688_0.2944845552113864","host":"s3://npm-registry-packages-npm-production"}},"1.2.194":{"name":"@camstack/addon-pipeline","version":"1.2.194","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.194","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"34e05c9e2fcdc95376cb33d68d8918bc0018805d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.194.tgz","fileCount":131,"integrity":"sha512-aCXPxNMnihkH2FqLrjtGZFoPCpKu/iXaBD3XxNShHzY8h4saLyt4XJoVYODMaAIaAiClyUzK+1psBDNJeVT2Nw==","signatures":[{"sig":"MEUCIFjixTc2AYJ8r0UCC3UZeA4gcScPPCkJa2kxhnoEtoT5AiEAgypurihLZG2jl9qRQOIc6PqnaKWnNxTf7iYIxwXfHhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12988158},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.194_1788720866169_0.255225240350647","host":"s3://npm-registry-packages-npm-production"}},"1.2.195":{"name":"@camstack/addon-pipeline","version":"1.2.195","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.195","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"b894d203f2cad410a08e375101d313626e886cb3","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.195.tgz","fileCount":131,"integrity":"sha512-gbH9jJ0frzAcBhOXz/bkUeKXUbEc0kRbzwdjYfp4zGJs+AZ44DZ2k75oh0lr5qOfm6tNxZPH52xRzTMznQGRdQ==","signatures":[{"sig":"MEQCIBY0y5/PKnTRjdsA0ZJfI0U6IQ+h5Bp8MUc22o8x3/cCAiAfQ6/qf/1Wz2h5dYbIDzQrp7R1YvbFn5EKGsXfSE6nbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12997674},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.195_1788731059289_0.480416459362194","host":"s3://npm-registry-packages-npm-production"}},"1.2.196":{"name":"@camstack/addon-pipeline","version":"1.2.196","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.196","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"62817186dc278530153c24e82ce5f75d3cf2a2b1","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.196.tgz","fileCount":131,"integrity":"sha512-FvkK6EcovREK3bqrdwngQgjFi+LmhE1aIzkS+ESJ7C5FnfPjNmTB+HpZ60S0N3hVy9F64fIa6NAcUEw4ihH53w==","signatures":[{"sig":"MEQCIAdDZvLBmZw9hRlEy/XyzyKi7muWRL8wSeh1ZG1Y/OuFAiBfPdfYxL4axYIUrSJtCnpPGkn9GR+dRc+EdQ8Sb5+3Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13002542},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.196_1788770347399_0.8112262356199245","host":"s3://npm-registry-packages-npm-production"}},"1.2.197":{"name":"@camstack/addon-pipeline","version":"1.2.197","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.197","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"3f5813db7860a468426a2530d89854eac8e9a526","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.197.tgz","fileCount":131,"integrity":"sha512-YH3KfFdwlnS3XWM0aSE+u1rCGjTlsncblUPyNHg95JdhqMovSDgI0w1L7Vlmvx5TLvn5pL1RBmXADQ5qVeM7QA==","signatures":[{"sig":"MEQCIGyeH3UO94w4pgbQlMqehrjbwVTLBfN4CuK4zZZjjsPWAiAHM2IojW2qjknjJQhLBdkKqYUwRobrGSy9FprNMG8Wmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13049284},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.197_1788774071655_0.6350664949183604","host":"s3://npm-registry-packages-npm-production"}},"1.2.198":{"name":"@camstack/addon-pipeline","version":"1.2.198","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.198","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"0d0bb57cff311bf1ea60ed40581dac1eb9148d15","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.198.tgz","fileCount":131,"integrity":"sha512-K8Cp9+Wl51ckpAsY+ddLhy/sttm/ScpU7CXPb2iCEvVOba2zJKaFx5pFAyKNvRDpSY4+Y3+OTy0yb+BXvtamYQ==","signatures":[{"sig":"MEQCIFHVmcxxs8ert0ahnwHynZJgvb1x5I/y7MJEOABoWAXWAiAPZmawr27Uz67+3kfp+Ut9NP95BdVjhHlBqNrK3MgtnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13052243},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.198_1788779331755_0.7305782288521683","host":"s3://npm-registry-packages-npm-production"}},"1.2.199":{"name":"@camstack/addon-pipeline","version":"1.2.199","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.199","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"239b81c363d6191d85d780f72f1a34b5321eeffd","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.199.tgz","fileCount":131,"integrity":"sha512-alL6YP/bGeGw/AiHbON3kk/VEsHZ8LepvhQKxrtd6q1hf1DDSrxk+u56ZHZiDMep9mmGbrVnSWoRsH70tDe7ZA==","signatures":[{"sig":"MEYCIQCQFIigTh00TuvXZVmz3+VYiH27YFv/KwA4q7F4rQoIcgIhALsKYb6ogfTWXEPAX6Ml53IW1pl5lBqq1SvcQMBDdHay","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13054081},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.199_1788783949453_0.7406976067267383","host":"s3://npm-registry-packages-npm-production"}},"1.2.200":{"name":"@camstack/addon-pipeline","version":"1.2.200","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.200","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"37c15dea3803a322ae19cdbc60978e668e83da1c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.200.tgz","fileCount":131,"integrity":"sha512-GEZC1nOb12x3f3NQov5Hn3EaF4JLTUHUCxmaq7g78Aa1UPxzXjMlPG8Gaor9x5Rb+f9x4YRSCWxkKLb0LST0yg==","signatures":[{"sig":"MEYCIQCNZGuAaT+PIE6Y9EWG7Zekb/cMUkbbqWWY8CCnz+kEbAIhAKvVsRkVChNYvuKvVDvkSKTwocJZdnlkVerCVIM/rzZC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13065974},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.200_1788785732877_0.11586396358728868","host":"s3://npm-registry-packages-npm-production"}},"1.2.201":{"name":"@camstack/addon-pipeline","version":"1.2.201","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.201","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"ad0cec46507d2e0c45f414045ff1eef3d3026179","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.201.tgz","fileCount":131,"integrity":"sha512-Y/TtkR+cPuc5dcMY1fhdIyCb7H+yaMN9knC49QzgKYfvlcEpOjdZvdN29KiBKnK02Xjyr1MJQ5KECPI/eE92kA==","signatures":[{"sig":"MEUCIGn/iqXYWKxP566gpGzxC6Bl61TD7Zx78uameC3rZ4/EAiEAw/THH6f9Ct4IEohiqHnbPN1eUekZgY0w4A/rK2hb27I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13124508},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.201_1788797152075_0.7186610890200678","host":"s3://npm-registry-packages-npm-production"}},"1.2.202":{"name":"@camstack/addon-pipeline","version":"1.2.202","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.202","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"22bae5960668eb7724b1d960ca8fed44cfe8f791","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.202.tgz","fileCount":131,"integrity":"sha512-syGQFi0gk40BFhGxoDZFAjfRYglS9UKQEPGVfBWw7JIAht27uP1Yh2Sea7bmwE3AI6qQk2XpI/nlBQnWgYPfsA==","signatures":[{"sig":"MEUCIDL/btVIZkRggTnmJp2pFxOY4gkjiq5a5VOm8H+2LUoqAiEAvXZFYzDpDIa21g74Xomds/z3v/ScTdvPsG6AIG/O0uY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13143876},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.202_1788798716345_0.646801544147702","host":"s3://npm-registry-packages-npm-production"}},"1.2.203":{"name":"@camstack/addon-pipeline","version":"1.2.203","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.203","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"3e119d146aa68fe87faf268c20bec2811d90dc5b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.203.tgz","fileCount":131,"integrity":"sha512-jxmoV8gFPG6CCVtQsX/qN1QEmQ9HpZesIYzQx/J7YujMW3U3/WZ7W7whM61gmydImcjkjkRuFSTzS2bRqCRrnQ==","signatures":[{"sig":"MEQCIFqkYx8RvLXyOZlh3nc10hj8t3qNM94DING4eCRPw7jBAiBcrATivM9JGJNmSDkZJSUpM6xd+CrIflxk5EMS8kd+vQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13145894},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.203_1788811815777_0.4879146665211114","host":"s3://npm-registry-packages-npm-production"}},"1.2.204":{"name":"@camstack/addon-pipeline","version":"1.2.204","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.204","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"63c99c142941cb6f63b7113c789d4e5141808456","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.204.tgz","fileCount":131,"integrity":"sha512-AhXjxBZjmwI9hgE1S0iPOTnRBzQgCoEliL7vqPHd4f1neyM5RHrq7AIUo6m10MvtYlxs+t778b/IFQzunBOeWQ==","signatures":[{"sig":"MEYCIQD2P4FTcAGlJENgk6CeO+7i3LtYcau/UgEam4Spp/YDCQIhAPPvvnVsB+rl4pj9FeXpVaDUE4mX07fN0v7mOArziB+v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13150908},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.204_1788813187535_0.958274429243001","host":"s3://npm-registry-packages-npm-production"}},"1.2.205":{"name":"@camstack/addon-pipeline","version":"1.2.205","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.205","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"c03c6fd81ea2cd669a57eadb056e24d0664b0397","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.205.tgz","fileCount":131,"integrity":"sha512-S0Lqrn0LJslaTWApLn6ZEAx8EMvLyp/yrUzLnAZkgqRC0IwLTAuEQTnVHHwHuRmqoBuRxHARjuxjDv/kNSJCUg==","signatures":[{"sig":"MEUCIQCKKSAiLVepRFJ7Z8YG8zEGRsHuPGu7/LxOmmTiaXgA2wIgRL8y9ESUxxfWdpihNX8rLL/hdmFE5AxOiDZqoLZdSzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13172654},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.205_1788815788815_0.315851540646662","host":"s3://npm-registry-packages-npm-production"}},"1.2.206":{"name":"@camstack/addon-pipeline","version":"1.2.206","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.206","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"e4e309bf1e62973d343a5b3513658bad959ca934","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.206.tgz","fileCount":131,"integrity":"sha512-Fs2TDuv6vp45wKHOyaGuR9YXJkP17i29nwm+1opNjE53RCOyAfPj5loe7Q4f9X7IPMtl+21/rcWVB04/X/rdiQ==","signatures":[{"sig":"MEUCICgxApx0fCrILUj76Ns1Vu9UtgPSYpRYAH0g7aE7i+HTAiEAsgo/nxEwOiYdc/PVZEBNshZqiBjZ/jr/06HQ0o6HQeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13174732},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.206_1788820606080_0.880796094934797","host":"s3://npm-registry-packages-npm-production"}},"1.2.207":{"name":"@camstack/addon-pipeline","version":"1.2.207","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.207","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"91aa5022f41828a9bf7125cae9bc676e14edf7b2","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.207.tgz","fileCount":131,"integrity":"sha512-E9G6Syw9cYxEg0dXBMNCq0jIahiF6YKxLVrO/vPkBnwTaR6Q7EKyV8WEaQ+Tu0qDTWp7NTjXBWHY96rQ4AaS+w==","signatures":[{"sig":"MEYCIQDUJF8w3hWS4d1CAZUUrJUW/Ih/9qLERtZXoMuYwNSDbQIhANJL/LCLu0tuaKO9RrHIL8PKS3PAVnx3GO7lFhTTkXpc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13197386},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.207_1788822865625_0.3855100711616468","host":"s3://npm-registry-packages-npm-production"}},"1.2.208":{"name":"@camstack/addon-pipeline","version":"1.2.208","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.208","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"a85cf34a5f570b5550fc9c6adf271bf85cf64cc1","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.208.tgz","fileCount":131,"integrity":"sha512-ldEbh+1TWnuckVQoMV6I5YxuSR9ufGbBEXAdKOOgJKYShTENt4lrsADMdhTYtIZrcurf7i5Pztu/Psqw8Wy0RA==","signatures":[{"sig":"MEYCIQCjcDbHRuT4356SEXD3XJMMuQTW6fhRe6G94y5u6um41wIhAIoCWeDrywwpWB8oMpHR4eH/8hT7Cc88Gk0rOkq1lGCN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13200634},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.208_1788850883740_0.7479205450000519","host":"s3://npm-registry-packages-npm-production"}},"1.2.209":{"name":"@camstack/addon-pipeline","version":"1.2.209","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.209","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"fea83eeafb5e24dc5688a77894fee2ed46f8de58","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.209.tgz","fileCount":131,"integrity":"sha512-QnzRGcVMmxaJ78uPzSTqAXXQcKzLrBgul68qAyPdmVtMzEfig8AVCwDUZfc8W4ng74kennosnMGKEV+f7o04lg==","signatures":[{"sig":"MEYCIQCyOPRve9XGSz7ZbJxTLpNRFixhGDeKKwoOC2noy4EwTAIhAPRx0bXPgarx38i9wZpY4KYCsiZizYBpcjH9bWNhYWHb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13200634},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.209_1788855830640_0.9393505824223789","host":"s3://npm-registry-packages-npm-production"}},"1.2.210":{"name":"@camstack/addon-pipeline","version":"1.2.210","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.210","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"c3874cf8847cf1062b33511bd96eebc13712edbc","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.210.tgz","fileCount":131,"integrity":"sha512-yOsFXFheUdBnPSGb81XeS5RQ+vZC3qCu/RBVGy5GwwfM7EwLqsLC4jMrnhKXgzo44FR9b7DxTNDUA+bbi69Mhw==","signatures":[{"sig":"MEUCIQCrNSNmbMky4KOwWPC4JO61JFK1E7FQ7VqAgJVSncGQuQIgb72Pct4xxr/hq47C9cnLjN5JZNLH8Cz60p9kCWYAwSc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13205738},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.210_1788868217315_0.8682082564363989","host":"s3://npm-registry-packages-npm-production"}},"1.2.211":{"name":"@camstack/addon-pipeline","version":"1.2.211","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.211","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"de72b717aba86f3243e5b825040c8f169aca2695","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.211.tgz","fileCount":131,"integrity":"sha512-BZzeW9lOctU3j71k+J7o6hEGzKhOCF+pWjX/PlDP0zr6XgqRy2NLyGnL/H4SLFYRUuZE6a099Dmk8sBj8yluIQ==","signatures":[{"sig":"MEYCIQC7PyIMcf51nE0+PnXXxm+VtvWJA5TY6bP/evKSXVjQjQIhAICJ+LT5ciqqkuov52fIKm4ZJJeae8YkxBzXXcR6MEPO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13206290},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.211_1788886871632_0.7739765487736316","host":"s3://npm-registry-packages-npm-production"}},"1.2.212":{"name":"@camstack/addon-pipeline","version":"1.2.212","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.212","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"b87ce035af59b854e2c082b9f286990d53284c31","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.212.tgz","fileCount":131,"integrity":"sha512-n7tdO1TUmMa2vUNDZn93Y5sAlnXFJFTstRdr2nhneu4HdyVqNeCOea2KRskKXZF3ZpzImj3S/NeLM8F/gcOvfw==","signatures":[{"sig":"MEUCIQCNGcoS2GxdgJVX+PetpTUN4Z/eaIgZ3Ax7sp46u4WIEQIgSCxTOCk9FbTdLn0N3AsiUEGovoQfYAYmaS0VreWwlmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13210096},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.212_1788894512738_0.4736229908791716","host":"s3://npm-registry-packages-npm-production"}},"1.2.213":{"name":"@camstack/addon-pipeline","version":"1.2.213","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.213","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"c7477589fc24c97ee3d5462ac4ae0aa565df4a68","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.213.tgz","fileCount":131,"integrity":"sha512-JxdokRy5nuSdDI9ky6zJ8/b6mD3UF49zXDbpYJMzD8/nf6wMaEUQkoD9cQ08kBfLSo0o25v456kG5YBg2Lb/nw==","signatures":[{"sig":"MEQCICMjWzBzOoocCqnsbME8rcqwzuFI9cKDOFcbzIchEhwvAiBL+E2YI3CMQIYybbpJ0o52Gbgd+HHF+d6U1ALYd528oQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13226602},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.213_1788901088618_0.9605790427995835","host":"s3://npm-registry-packages-npm-production"}},"1.2.214":{"name":"@camstack/addon-pipeline","version":"1.2.214","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.214","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"fe0934be9cba3ac472519186168c0e33ee3b971b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.214.tgz","fileCount":131,"integrity":"sha512-yObJIW81GdKPCRKUv4kRzf4jyGnr89w6Y/0THIaxObxJk1XQtl2zeF9vwRxWTqABO5+DvYRxxcfkpmatkpHkpA==","signatures":[{"sig":"MEQCICUNN9kb777t0ng4g9i2oNag19exNJFFAAPDzeslA5JBAiAxavnJpFwoRLpz+CexxEQ2zRGcSFwUToWlNm3Zgh/8vQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13270152},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.214_1788931239629_0.4599701764313533","host":"s3://npm-registry-packages-npm-production"}},"1.2.215":{"name":"@camstack/addon-pipeline","version":"1.2.215","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.215","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"0498be28a8e4a64754716a1c0e12063e805f4fa7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.215.tgz","fileCount":129,"integrity":"sha512-nRGJ5Af54RS3tKqvGTZlNXCOL+6rABu89BKF5lSwtswvOBK8V/JPlFWVpsuGpcr17Jtah6PeFVbDkcH7c5QXhQ==","signatures":[{"sig":"MEQCIHUFFL4IPy7rs4uYUHxxYfMelOO7/iNC0KdHCjHwNVjRAiAXBjc6V7aWwjLrycsVXq9ujr4+ZCDvtl6ULlydXojVvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13251635},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.215_1788953791558_0.41257302699664367","host":"s3://npm-registry-packages-npm-production"}},"1.2.217":{"name":"@camstack/addon-pipeline","version":"1.2.217","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.217","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"98e8ac937c48400666c007841b29ab029cd20d7d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.217.tgz","fileCount":129,"integrity":"sha512-UusjYoV2WIHiQOnGIgPeLWaMx2sghFcdHRCXyIRxgaUga2fF6UvN/8Czyzx+drPYZVc9yZ40wZSVlLi9hIW0Hg==","signatures":[{"sig":"MEUCIQDSBiyF2izbPzvbkeHe06yicsbiFG9al4a8CEN8BOEn+wIgDrQXje6k3kS0F8qVvi7q7ImQh+yn8xMZLly0G+HYqr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13320743},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.217_1788978151684_0.4073357870876435","host":"s3://npm-registry-packages-npm-production"}},"1.2.218":{"name":"@camstack/addon-pipeline","version":"1.2.218","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.218","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"f54375d15ffa4dd6bfe9c0a6d45ac50cc0ff190c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.218.tgz","fileCount":217,"integrity":"sha512-09Fu/Kf+ev97IBxiJOZpwc1AnkYLF0XdmplfjmzW+sugQt1/58zc9rLdJ1QEUoHKqNv/e+CqJJJOJQice44qLA==","signatures":[{"sig":"MEUCIFZ6IJVeekTxkqjtnOz/QBhsxXHf6xHmiAZcDSt/JCxrAiEAk+Krmbz9s2OsFHVtguV2sc7VlWTVTRi4quiGboR45sQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14527710},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d9b1be2e7eb4c50c8280e022fe5e9d0260b95873","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.218_1789052060778_0.593503904494258","host":"s3://npm-registry-packages-npm-production"}},"1.2.219":{"name":"@camstack/addon-pipeline","version":"1.2.219","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.219","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"771244a5f1fe182ad16eb0f46deb155ac998fcf0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.219.tgz","fileCount":217,"integrity":"sha512-IPVE3/I+Je7MOEPxv+0MydDd5jPEO8nEXPn/DQCHU8sSGiD/qq+pC0uMd9KwFm1z1pioVKAcUvFU67eFhTRw5Q==","signatures":[{"sig":"MEUCIQCFn52tGXuWwRqNYDNvp88/OazEoBZmefKRw90/BeEyIgIgdANzatg4VKGSlk7XqtshhFhN8pl7XUl8RbeKAi3QdoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14531674},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a7d33d21d2de164fac46611e46598f950cf5ebb8","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.219_1789096208590_0.7820436075608039","host":"s3://npm-registry-packages-npm-production"}},"1.2.220":{"name":"@camstack/addon-pipeline","version":"1.2.220","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.220","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"85e5e62ed0065823d4cc8aabaf5d9b6df6d8abe7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.220.tgz","fileCount":218,"integrity":"sha512-Js7UEcXxW/UPU6ROc5CrWz7JvsuAoeYmQ10anyPcxjuRTl+WJH1WNyntc45XtgbdfSxUg4AF9vIRWsycSFzbMg==","signatures":[{"sig":"MEQCIAnZKCtw8dI+YlG5jpSI3Qk1WadoM37ZlS9Z5m4bgj75AiAvVaOdhiDNwyLG2LCMEIQORuepU5XV+wGAk4POe5HjEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14553061},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1daf21dd0d9951d36ce148408000f75ee34f6964","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.220_1789127218734_0.631768466393789","host":"s3://npm-registry-packages-npm-production"}},"1.2.221":{"name":"@camstack/addon-pipeline","version":"1.2.221","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.221","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"a923773e94278df331bce124febf285108f55f69","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.221.tgz","fileCount":218,"integrity":"sha512-yR92LOHFsmbZ3eKiTB2KTKVsYhYlI7fMaXaW2nS4pJMuSbEofL1RL+tn81CKQjD07BBVyQXqpPmoG5YyvyUGuA==","signatures":[{"sig":"MEQCIEmAY636gm4cOmFyPBaBoGtHKvxoOthddAxBH++YChkPAiAiNZnXOMo8/i5BWfvJOoIl0JZghDmkc9xOnAQgApX+vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14629060},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"528d5c054161ea2062114134e57c3b6d26229bf4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.221_1789144801352_0.5784416581625376","host":"s3://npm-registry-packages-npm-production"}},"1.2.222":{"name":"@camstack/addon-pipeline","version":"1.2.222","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.222","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"5ea9cffd9a7ea631fd1a9ea93c6a0a82eb628524","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.222.tgz","fileCount":218,"integrity":"sha512-RP7fSPtta9GFVwD7ZCJlQB/ho4CJZrC1Gpplq/xl5LoL22YKTucf5qS64D/N+rpLbYHdhAd5DFSEVheR5SSx5Q==","signatures":[{"sig":"MEUCICG4rxLLQwHQHO6/ZytsWuSKZd1IAsJ67KEStwzOXl9VAiEAuzhI2RmTrHNPCGQsg1MtsSqAQwpXsfcUkNyPrLUE6s8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14640388},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"71df4f0d914138aca90d9ce62349c01d4fec956e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.222_1789153736891_0.937851334487118","host":"s3://npm-registry-packages-npm-production"}},"1.2.223":{"name":"@camstack/addon-pipeline","version":"1.2.223","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.223","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"3cb20bd2e2b58f60578819d00283f294783944c6","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.223.tgz","fileCount":218,"integrity":"sha512-AGs9a/G4ii1X9prNacag+JBOC1j7/h8/IGyjEILY/pnwRhAfmezeCuPGcjwauam1Kp7lYK5c6rTwYYLnSNX7nw==","signatures":[{"sig":"MEUCIA+hQKSzxcECza7RtraQSKAJDnNi3TCrVi9hQWqQsAasAiEAsWQ3bvG1osI88egB/W+5JLUJERqst5ip7sEray+I+EI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14652755},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c0aebac84316f8d834fa33eed085472bb60ffd7b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.223_1789163649947_0.3926999364074353","host":"s3://npm-registry-packages-npm-production"}},"1.2.224":{"name":"@camstack/addon-pipeline","version":"1.2.224","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.224","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"68cbb575cda75ddc9ad478ac0e81ba9ab8b3fd01","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.224.tgz","fileCount":218,"integrity":"sha512-tpYMkzUnRVzZnq+R6Nqqtb5Ok6tT237FFFBzqOjglpD8ATvXhqxmkbUw9+OHqotBhz7pAywuXrJjb+KcxsPO9A==","signatures":[{"sig":"MEYCIQCCect7BFrKld+cUlxOSN/+sCRqBooNS7i5LyEXIdXqOQIhAOyzIniSvgO+cL8p/jDtJ+jtG+Zjzb32VrSPEDIELJsX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14652755},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"be96e48c840fd1a08941abb3608b8aa66ca498dc","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.224_1789197638533_0.22050308829144272","host":"s3://npm-registry-packages-npm-production"}},"1.2.225":{"name":"@camstack/addon-pipeline","version":"1.2.225","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.225","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"be73884f9ed24737da33cc250b1abe43ca3f4e49","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.225.tgz","fileCount":218,"integrity":"sha512-e91U3xA1YfpJGmUvaUfxB6ldcgNnZjhkWA9xbqRAhFzN/4i2sOsDVMQ7A2RbuX1t24pNcleclcGP+wcKdQMXzw==","signatures":[{"sig":"MEYCIQCRYcLkEc3tYqcAWNuFu6/S2aoPZcM1Kw0Kh/8/wgLwdgIhAM1tFlswsv0wtM6upqekT6b2Y3SVMb9hZQTDcmHqYmPt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14676383},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1a332e88e739909896bfe943b1f5182e0eb79dff","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"^0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.225_1789223331935_0.5034928639334828","host":"s3://npm-registry-packages-npm-production"}},"1.2.226":{"name":"@camstack/addon-pipeline","version":"1.2.226","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.226","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"e3c98aceed1e979a72eb252257639b15b79c2249","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.226.tgz","fileCount":218,"integrity":"sha512-xjuXH+P/46kkvUZOypTWD0GNU8lknzHd+MczWNm452wuhxBSZ5VZIqD79iSfXTWZRY2YkJ2qDVdUI+75ira1Pw==","signatures":[{"sig":"MEQCIEn/24jZpQ9F+7fr8jauPI09RQRcrBC1qrb9R9mK4xbwAiBgOOqZu38G+LrQ1Kzziyv0233nWUHjTsk84aBTOby1Rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14676382},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"97d31635bcae6de33f1f7deb40d1e0e92e92ed91","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","lucide-react":"^0.511.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.226_1789231604435_0.7054543162584508","host":"s3://npm-registry-packages-npm-production"}},"1.2.227":{"name":"@camstack/addon-pipeline","version":"1.2.227","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.227","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"62a4972b0905fa08b504d4499610b8c753604b00","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.227.tgz","fileCount":218,"integrity":"sha512-+P06G2ZMs0JNW7J27UKJ1RLqXKcy9yOCZZuiYL2LJpQdPTvzG51GLEBuIFSVb4xOzIhpPYKPsD0iIa6twdz9Gg==","signatures":[{"sig":"MEUCIQC6OI/qkr7zXd2TmrA/E2fwufGz++hIX+fIfoh4sNar8AIgJQ+gvp2YbIsB/QISrXG5PS6UPO7lPGgmt2Mh2NbjWfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14683596},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"329d21dedefc8ce7f2977a3578d101dd0b23f9ec","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.227_1789247722372_0.7660165299030928","host":"s3://npm-registry-packages-npm-production"}},"1.2.228":{"name":"@camstack/addon-pipeline","version":"1.2.228","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.228","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"4e31867cbac6de53cb93bb3e165b3b6aebd0c1da","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.228.tgz","fileCount":218,"integrity":"sha512-oZOyGzoyfD93LC2EJHDSftcecenqbquaYQBH4tcQqNx8lhbNzu5GeG2P7BOTOxJdH0Bm3aAUV+xt4JC/RXKF5A==","signatures":[{"sig":"MEQCIHa4wju4Ewlc4CwgBa+7++VfNgtP2oeuChPCzLViocK3AiBqlc9813Z6o5iD99bNqou5oaCB00X6m6+LTJqBVH7c+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14709722},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c7150fb734854e668890c86de45e70ed1e1ac3ea","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.228_1789316442700_0.1960025347786596","host":"s3://npm-registry-packages-npm-production"}},"1.2.229":{"name":"@camstack/addon-pipeline","version":"1.2.229","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.229","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"a5ce99539ae70b386efb55fd281d89be05bb3d14","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.229.tgz","fileCount":220,"integrity":"sha512-2SWfutys+JXkOG/gwnZCClpQ2QmbJcUwfiHO+jMhH9EKgvqTFKzV6wphU5ozyF7+gPGLwEmLvsZOdw4ZyM0r7Q==","signatures":[{"sig":"MEUCIQCA4zzhZTYgArJmzrdz3wlSeE9+wNFRSEunp/4xvYTuHAIgSNQc9dn5MyqpvM9aA0sH+pU81zyM2LtXoCHurZ/J4/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14839218},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0b137ff19758e20d435420fe5da73c3623e813da","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.229_1789334238256_0.017227547203096494","host":"s3://npm-registry-packages-npm-production"}},"1.2.231":{"name":"@camstack/addon-pipeline","version":"1.2.231","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.231","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"dad3ce364a81d46e5b0125ad093e0a2d544796aa","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.231.tgz","fileCount":131,"integrity":"sha512-f2YgQ6pIk3oYmxkrZ+x9XDEiIjgfh4UWNTrsiX22LQGBO1z+k7qoMiTzvD/3zUhyroDhenfwkdB8yoYh9kuqIw==","signatures":[{"sig":"MEQCIBMBmbDlCr30rWLHM+tEykR4PnDZOK9JqiWIrxjdmvMQAiAQsdYB9UCS+cC5eH73bptPGsaqTViu9ovXoPWs+HRtPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13638823},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f95d082e69ca59e962ec5d42ca7ddfc5683d270b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.231_1789368475202_0.6255276436269173","host":"s3://npm-registry-packages-npm-production"}},"1.2.232":{"name":"@camstack/addon-pipeline","version":"1.2.232","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.232","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"ef61048edb954360787f0bfd878743748b428e47","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.232.tgz","fileCount":131,"integrity":"sha512-CwAAWNn7Lb8nVS0EqY0LPrd086r/0AesPG/MeEDuyZmh8MyN45YTAkWnbeTSF1XnYcRJjTOdmGbsefhl/Nwlpw==","signatures":[{"sig":"MEUCIGkjv35WUGvUFv0okCsI0dPG3MyRWbxMz1QDx3PNz94FAiEApbhcVRDIHrROe06hy+ezsIdhKZ2Ac4HIoyphwA3BL6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13643570},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4d8676593bac6ff858fea82b941f047f082c5c6f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.232_1789371260202_0.4582870187665917","host":"s3://npm-registry-packages-npm-production"}},"1.2.233":{"name":"@camstack/addon-pipeline","version":"1.2.233","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.233","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"fe58669c6fb32d21e0665c48b90b46051d0736ab","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.233.tgz","fileCount":131,"integrity":"sha512-8ClFN2COuDdq0eFgk/cLvHtCy42+swWQfdvOpr8K37EE05pbHPYqqOXNbe1Ptsiq5fSaJh7l7SWXsNSdJQWBOw==","signatures":[{"sig":"MEQCID85YRbz5yj4aiUyW/NwD7X8Euvg+iIBWbOOL5XfgS2/AiAb/98SIf/DGTIVdpoChTzoFteLH/MUQF7RZTGmG8uDsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13661709},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1be17fefc3a10f4abdf594e3067f5b20ef3f0fe5","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.233_1789375898413_0.7181077627397565","host":"s3://npm-registry-packages-npm-production"}},"1.2.234":{"name":"@camstack/addon-pipeline","version":"1.2.234","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.234","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"f4977bdf412d9334355892c4c1d62ef51ffda0a7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.234.tgz","fileCount":131,"integrity":"sha512-LU9ellscFj+HulV1kyoxMJOTx7JN4QKsrlEUQOb1nfmYz+vALVXQ3kLvJBNnYT7aoTNS3dLFyGRy15kquxp38Q==","signatures":[{"sig":"MEUCIE/B7sHYpsoGUWw+eBV1oKwQjkNgo/ov2opnh/bnhUZ7AiEAxp+W0ek6eNFGR01vVvvm2fRikSbTeFk3baq25wUP6NA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13661709},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4d96e1faee270632bc03e0be4067eaa6570cbde2","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.234_1789377419595_0.04189691371537996","host":"s3://npm-registry-packages-npm-production"}},"1.2.235":{"name":"@camstack/addon-pipeline","version":"1.2.235","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.235","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"6b1aaafec83ac13b75c03ba17518cea9c5a18b21","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.235.tgz","fileCount":131,"integrity":"sha512-BAhutGNJEWaIzemgl4nS2fXWIRSEK88r6NLH3VKC43C+wEYSw6c195lfvvSwBQEcPzu7U/XBo1wdC3O3ToWUng==","signatures":[{"sig":"MEYCIQD4+3mu1k7JnV2+jBW3mqR7q1mYauk6R41t2KDU0HB8KAIhAMC8ikG6XIFy3bbKsgUkgxLy3k6TLSdlkQVOloIMwwGL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13666437},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1f2fd4968202bcbe83387d38421bad44afccb267","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.235_1789380391625_0.3106820324596278","host":"s3://npm-registry-packages-npm-production"}},"1.2.236":{"name":"@camstack/addon-pipeline","version":"1.2.236","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.236","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"b080d3427268a3cae7ef384ae002a2f25a4b7c12","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.236.tgz","fileCount":131,"integrity":"sha512-EOpSdq+nBAFjZ7IWIw6B54oRzakbCLYCKX8e+fTZWUx9jGIDHFj1/Ebujy5zFj/Npb/0FoE+bki/T6RujrIT6Q==","signatures":[{"sig":"MEUCIGtJdm1oIcE4e7JPUFa34sdFGqkDA3pjEM/VN216OdlRAiEAoInOxYSRpY5rr32dTrBRVR0wqWwzWRlj2T+t/oRNVHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13666437},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"cb336ede35bd8bc9c552bd511b326f64854ba63d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.236_1789383547422_0.557493601424875","host":"s3://npm-registry-packages-npm-production"}},"1.2.237":{"name":"@camstack/addon-pipeline","version":"1.2.237","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.237","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"13237f5cd9429294bf7efd352892100137c4992b","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.237.tgz","fileCount":131,"integrity":"sha512-oStjLuRY0gy6osi6Hmp9dGX7ysjIjb6FHrh0oYuYUAr4gKbDKJpG4DQngKJXfXru5MrsLpJ5juDQ6hijK/opwg==","signatures":[{"sig":"MEYCIQC7tKxct5RLo0fg4f2lO/I1tptoLw0hUSM7RncaksoFRwIhAKPzg5Cx/7hPdfsKY1UNcWIWgyREX/E1qj4MLv38D1QA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13666983},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b76aa7995afdbd07821dc852c504a85608bd54f2","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.237_1789388981273_0.5910313553240103","host":"s3://npm-registry-packages-npm-production"}},"1.2.238":{"name":"@camstack/addon-pipeline","version":"1.2.238","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.238","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"57dc992a653255f5d082d443c50fb5f33e0e171e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.238.tgz","fileCount":131,"integrity":"sha512-akzrGtqDDGyVWLekEpojwBV+QdEeN8FHi5harTk6Lp8V1viv5wwUVbrmsPYL3hbg6bH70D7VpdowZqaQarWFiQ==","signatures":[{"sig":"MEUCIQCR5fyQK3q6ew4zv7wmv2GfNXu8+UIGzQJX62qMiwTD5QIgPDZfF01WT0Zdr7lDabjRVfTNhGI2HgM+dSm6p89TUKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13667463},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"71cbc04c1efc98e5ce2ea512aa8ab1dbfef9fa6c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.238_1789390743021_0.19101340527322308","host":"s3://npm-registry-packages-npm-production"}},"1.2.239":{"name":"@camstack/addon-pipeline","version":"1.2.239","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.239","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"9ba3bcddc560e0708312a28777ed4bf76f451988","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.239.tgz","fileCount":131,"integrity":"sha512-ORo7WpQLibv3cy+bnYNSKzfPx85ANkGyolRNYlzIKPy1WXXeR9J9G6tS67i8IowY0Z3+ERnEyuSEgNNq8GWUrg==","signatures":[{"sig":"MEYCIQCdQXqoQwkCclHluGeWDhKIs6QoQQuKCMqJvxtCRL3KewIhAMQmEQpsfRhXSEgTQn337YiGhwK6pcNzi3b1WdwuD94C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13676883},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"44ecde13b6ca0497cadfa4955cb19146ad80cbad","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.239_1789394039451_0.8673412360858221","host":"s3://npm-registry-packages-npm-production"}},"1.2.240":{"name":"@camstack/addon-pipeline","version":"1.2.240","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.240","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"2d9216a18618018f71d7ff7825f9627f19dba339","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.240.tgz","fileCount":131,"integrity":"sha512-/GkPvlTvIlpQy/aJV3zXuQpia6NCZK/mv31QkTcX7mntCyVg6pwIhN4+BvXObTNrjPnXIzRGQQOw5rOG//M6Sw==","signatures":[{"sig":"MEQCIDGdg495RU3wiOcf3UT/BoOxY+RkBqDu3NAvMFy//wMqAiBr7ZvugzB/MlQ1NYUAdJ2vVLp09Pjbi9vfbVMAZYNsZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13677349},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"d946ce42ea23556b07f2bd0400c3527f0e4c1f54","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.240_1789407288051_0.28351521225648724","host":"s3://npm-registry-packages-npm-production"}},"1.2.241":{"name":"@camstack/addon-pipeline","version":"1.2.241","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.241","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"620ad4675fb8812d98cbebf49a1dfbb99c82991f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.241.tgz","fileCount":131,"integrity":"sha512-UFrYiwOExsrFDT7g/dss8NS0/XhsSnW46nwWrUiV/PjD93zauabb3StlM5Uw0M27O04UulgAw3/toQYlUVLIQw==","signatures":[{"sig":"MEQCIEBa9uGM2M0aa4jz2Oq3JE5LfEoAw3eWWPXPSEH4TmFjAiB0WJb0lNvfKdnEofj8X3HQr+QvPTrSQke7s7UNINxWgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13677349},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"3a499bbe9c5d238b4cacb4957226b16d7a0eda32","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.241_1789409168603_0.46995545081095247","host":"s3://npm-registry-packages-npm-production"}},"1.2.242":{"name":"@camstack/addon-pipeline","version":"1.2.242","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.242","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"65936744058ef71b1845fc5556cff37fc6de7a16","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.242.tgz","fileCount":131,"integrity":"sha512-u2ZlTWWYlCECSilu4sAtIIM3FNZVvFGO1K8DDd3ncTTwPrrH/ks+l1wq54vQIF3EVaa8PDNqJhGpM3eDjNtegA==","signatures":[{"sig":"MEUCIFedJR6FJVeHbLrHpELkO20/4JjMZJorSlMV7tpCRg6DAiEA+HgRHddD3fTYPdBzdH/3Wkmn23icXgZ6PHbrDL6LV0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13682536},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fa4078a15610fd4a6b3360339a39efffd9bc22a4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.242_1789417922533_0.8083718716696284","host":"s3://npm-registry-packages-npm-production"}},"1.2.243":{"name":"@camstack/addon-pipeline","version":"1.2.243","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.243","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"be2b54ed71f809a3372ed110004bf992ee2cdb16","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.243.tgz","fileCount":131,"integrity":"sha512-e0HwCKT9cn2akSbnDa1gZvGpj9JF+2bJYOZ8ITP6W5H+u/4ySULz4jRjTcM1EL6W/6jy1X0Zceoo/dI5yhcZmA==","signatures":[{"sig":"MEQCIFX+edSZWrMCHaz+Iubd9Ljh9hxi8D34+jcqjzX1jNEEAiBShjbefwhQRmlFMD4fACA1ujBJFOLsxcNHL8DSJADMvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13682536},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fa4078a15610fd4a6b3360339a39efffd9bc22a4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.243_1789419179204_0.24756287116536035","host":"s3://npm-registry-packages-npm-production"}},"1.2.244":{"name":"@camstack/addon-pipeline","version":"1.2.244","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.244","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"2e71bd06cc328babc7844d7eea307236d33e7a20","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.244.tgz","fileCount":131,"integrity":"sha512-WJ/hhP5WMJIjJhzF56VlUjYtUflB8RLmNsO0jR80mHx95Pt2eYuu9u9YRCjsZvhKDv+LFAIShYu8W+xaGOTMwQ==","signatures":[{"sig":"MEYCIQCRV12XQIneQJ/ccf1aFU42z65FkWSneuCNMxHfGTRiCgIhAM4/TyJsxMKGblkqN9iuirgkOLm0AmLjxE7cOzqx6nRL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13691836},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c5b4a9b7c74582be47bd89e618654c28e2777539","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","publish":"npm publish --access public","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.244_1789463449529_0.7760235421723212","host":"s3://npm-registry-packages-npm-production"}},"1.2.245":{"name":"@camstack/addon-pipeline","version":"1.2.245","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.245","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"23c3e78635bc2a84151f10f872370d7afc0cb43e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.245.tgz","fileCount":131,"integrity":"sha512-C8vHs+88AqKLe4OziA7clrmL1ANOBrwx9Izu7ddhI+O8+zZ6GbWaa25FcydwAO9fyqODSYwBsrqAxNl9/uhxng==","signatures":[{"sig":"MEYCIQCjAJDEExptl+MCOpj5ZaUN+NG+basqPNc++bnCKUdSIQIhAKg41OCz9ZMTOLLFdaCuEzruMwm8KeLowNoeTaZYTeNg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13733996},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fdd953bb4a9abb8d0e36d5b71fac7de908ad291c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.245_1789472743733_0.8128624671160074","host":"s3://npm-registry-packages-npm-production"}},"1.2.246":{"name":"@camstack/addon-pipeline","version":"1.2.246","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.246","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"c43535d0b5a92eecbbf60ef190f810087a572a91","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.246.tgz","fileCount":131,"integrity":"sha512-cVb/Z5OF53vSm/Ul0dC6zdyIZGYJLUXHfl/sEBrdMahTFZ6TSn8SOceexv0JE7LPRBf16UZqENbU6OQxZX/f0Q==","signatures":[{"sig":"MEQCIBa4M5JETqA/7HsYcs3/6heMwYj5mbnH6EDB9b/YeGpbAiBWNyjsFpwT7ENk/XNRUfndUwZEQHTe43fyriPGs6Xx+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13746885},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"f61414b8cdc89f9a8c417b5227ad7676b940ccca","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.246_1789492107723_0.8122086103707602","host":"s3://npm-registry-packages-npm-production"}},"1.2.247":{"name":"@camstack/addon-pipeline","version":"1.2.247","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.247","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"0bdd35dd88458191293d6106675982bbe8977f21","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.247.tgz","fileCount":131,"integrity":"sha512-2dSEsFieWpUBH5wJMg2nNHLrkDF6J6voL+GDZ1Z3z5V7tXEdgzBE6bdiwWnLdKTJlfWSIAtIVXIJAmzPUFPzuw==","signatures":[{"sig":"MEQCICllz57n/aLE3SS5NQ5s8IwQYOKbJILDLirTVK0UgbegAiBL4H1lMKPiSwPxyntkRvhF98pc4P6Y3xNo9NrOOrh+dQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13746911},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"14933d51d02c2851dd2e2feaba844513e162cc52","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.247_1789545302887_0.9129034499679716","host":"s3://npm-registry-packages-npm-production"}},"1.2.248":{"name":"@camstack/addon-pipeline","version":"1.2.248","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.248","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"69ca17845f3adeade4bbae40bede65e3236f2931","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.248.tgz","fileCount":131,"integrity":"sha512-qKbHHX+gkzI+ZzF4tOafYOALPkp1cYamroGEom7dCEd3q88Bg3xlT8He0IN/DPJVFUThD/+6MoDliVWHrTnxgw==","signatures":[{"sig":"MEYCIQDKEPSkmtUNHxYDCyPEG/1vUOgrVkR4JDJjVFIzugQ6AQIhAIZd8KoI8Qg8Peplqull9jv5VI2bSmzMXGV2TFH+g+5U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13749872},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"481a480b91a581de780b14dac4cbf129ce20e821","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.248_1789565559826_0.618820276156334","host":"s3://npm-registry-packages-npm-production"}},"1.2.249":{"name":"@camstack/addon-pipeline","version":"1.2.249","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.249","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"128e3bfe963210dae5cb55f57702410dc7e62ef7","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.249.tgz","fileCount":131,"integrity":"sha512-zNclOwQSce4rH5uruiQwNjBDLVvix1Q7vB5+QXFmAnwzdmg75lQA+rBY3jnGwvyfcZryXS4mokN/C/U1pUaanQ==","signatures":[{"sig":"MEYCIQCdm3FFMtWYW2i6G5UxZY1cggz7UZ8qWZ3Rb/5kaubDIQIhAJpwRXfq4oMpVn6FSvhIC2JCN7K3UE3kZ8CuhocYcsrn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13759241},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2edac6c172693c235c3bb12dcad9b7875b102f59","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.249_1789573633598_0.4315303944604567","host":"s3://npm-registry-packages-npm-production"}},"1.2.250":{"name":"@camstack/addon-pipeline","version":"1.2.250","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.250","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"6dcc687919eb8d0ba70c55e6f933f9fa3bab5286","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.250.tgz","fileCount":131,"integrity":"sha512-rf2u16uWYDBdITLhMbeqhOqkaflH/byHuUOzy5t7jY93Z1h1+KEnD/BV7BoRrdI0MeXgDD9zvxdzBkGj2YZxkA==","signatures":[{"sig":"MEUCIQD/XuxNQa+PKudbBzMQM13pqavN6NfYPa/SkWMLFPyJKwIgXJXsT3VvQp1r+R9e6ct0EHsNCPeCrIG+ILNOHJX8ghQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13767538},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5aa6cc452858b39856c31485e1f4fea92562bf1f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.250_1789579147123_0.1712438036453261","host":"s3://npm-registry-packages-npm-production"}},"1.2.251":{"name":"@camstack/addon-pipeline","version":"1.2.251","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.251","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"1694f46fbec28523fb28276641f9e42b14fb8487","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.251.tgz","fileCount":131,"integrity":"sha512-gHHyxbmGZ3Pmx4JLHDeSv5HgcoOx9RbaPNoVi0Hz3sGcj1ho00Yy0m03fcqg76vSEyaSLUS2jkrKO4iMiB5ZLA==","signatures":[{"sig":"MEQCIDNRrP+GntXStlTynsoW+54u8N9e/zvbVber2vISID69AiAuh010+Fsj1Z8gU6tZ4jBV1FjtVprFkQMrBRGVWdHm1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13775654},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"5ae9c75922de6033e629f1c3f5887b9e8a6a34cc","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.251_1789631492972_0.5944347056892065","host":"s3://npm-registry-packages-npm-production"}},"1.2.252":{"name":"@camstack/addon-pipeline","version":"1.2.252","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.252","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"b969ab03f965d78e3737e47cc4ce0c539152b418","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.252.tgz","fileCount":131,"integrity":"sha512-z/b4ohZzSQ5NHSmqLAIqTIUhHdldQPmYu70JXkZmEqLNVC+GtduGV+EUl2ssf+lYmoygSqBuRYNhkq4cezJ64Q==","signatures":[{"sig":"MEUCIDmxYn9Q9IWyUx7ZDsMN14Apnq6cbbVL3hdrETpf6UTFAiEAxLn8ECqYGM/Am6Q1N/jtuVdzUGgnGHxqXEF0o8FysZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13775654},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0cb58211667d9bfe63ea9610ca95acc0fc7f736f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.252_1789633848945_0.8292606905984712","host":"s3://npm-registry-packages-npm-production"}},"1.2.253":{"name":"@camstack/addon-pipeline","version":"1.2.253","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.253","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"58e1fd96ea22655440a79c12fd72627a7daac700","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.253.tgz","fileCount":131,"integrity":"sha512-P2HPpnYLwLNTo8CjlEpGowBmuebNw/vuaCue6GjZDzXRIpm2a9E9xgJaXiomz8yJXz4Pez3ZZO6BvsxOJ5mTzQ==","signatures":[{"sig":"MEYCIQDXjW/WUQ9G3z4F6V3QS05I1FOUCJXbaD2pd+QwLAYdjQIhAKwRd+44TjLpQoyqjR7aEinDpPWJps7H/X0P8Uqf7uJa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13775654},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"26fc8b532465f86e657becb6836479edad8507d3","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.253_1789639166544_0.4393589418866759","host":"s3://npm-registry-packages-npm-production"}},"1.2.254":{"name":"@camstack/addon-pipeline","version":"1.2.254","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.254","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"480ff7c22cf2899f893539582ca324c6969efdc0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.254.tgz","fileCount":131,"integrity":"sha512-DSwUyxdGhBofgbLbXjaoubTYJSQtCvGSEco676aw0bZBh7DR33TDZ3sI3nhgnP1dFHs/QfRI7rUIgNDVUcN/3g==","signatures":[{"sig":"MEUCIH8vTUMqpiHDKFqH0IdOb0MTKSXkPlehd6eLitKx+ICkAiEA9lN3FmUns3laRsc8zu9Z/mcdq1JRpLT+yM9aag3HP10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13774758},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c98fc9ab6a288e0d3264393ff980c29fb2f03924","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.254_1789641657897_0.505872337275826","host":"s3://npm-registry-packages-npm-production"}},"1.2.255":{"name":"@camstack/addon-pipeline","version":"1.2.255","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.255","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"5493ff535989cae8813a1d192ff1fe6f5864ab00","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.255.tgz","fileCount":131,"integrity":"sha512-Mb+q7yYuELClLphVYrBB0bW+870XSKergmOJgIE0O+JOcl2agUEYxzacz4YCloAr9iTefc0HhD3MsctFvlpB6A==","signatures":[{"sig":"MEQCIHHHKKoF7w4r5YWyYZYG9weqNp17xnsUq1spwTGh5Y5GAiBipERPAsL8isB0zJhTal9WcvIhWg2wTBp5VpEVrNye8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13792637},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"343ad58d61027a9cf5b2977ce7ec60214adb39fe","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.255_1789649888744_0.5689238777499448","host":"s3://npm-registry-packages-npm-production"}},"1.2.256":{"name":"@camstack/addon-pipeline","version":"1.2.256","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.256","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"eb6845568bca778dc2dd50e173836aef5600c981","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.256.tgz","fileCount":131,"integrity":"sha512-ipJJwEEPYIaKpF/DI0lkqXfHo8QjqoCGVkxWuXEZCP/TVEOuH49tda0uQ/UaUwfjNHJOlRbxT1A0+TeW5ZbhhA==","signatures":[{"sig":"MEUCIElLfN7DrDk2JKIC/nkmst3kGrtKIa7krqz22kIDDk5RAiEA/E+zRgtedO8ukBFzz+t9b4/OtjOXaCmxG+7wKwcGwwo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826186},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4c6128029987f9fb3550233ab29122994d6e2a57","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.256_1789657960267_0.08370286810070637","host":"s3://npm-registry-packages-npm-production"}},"1.2.257":{"name":"@camstack/addon-pipeline","version":"1.2.257","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.257","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"36b777df55e01deda51880b24cecac4ac757596d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.257.tgz","fileCount":131,"integrity":"sha512-ne7IOlAtr1AO1ctOj3H8SG44v4f+5Rb7XgbWmFH5LGoFGJLrEilfgwI0J7JMJxZMDENb5HCxkMTf51SRI6D0OQ==","signatures":[{"sig":"MEYCIQCLBb+VS7U7JKPWwAzoZw+iORmvN2DroiZ0p5sX8wLnRgIhAMV0e5fMxBFBhf92dFtkNmKIETdow2aSnM7adEJPu3cy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13811369},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"46a185208631d2d2d87800213472495f3985820d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.257_1789663347740_0.3808331810861578","host":"s3://npm-registry-packages-npm-production"}},"1.2.258":{"name":"@camstack/addon-pipeline","version":"1.2.258","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.258","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"438842068b6012bb09b750723fc9063756a2422a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.258.tgz","fileCount":131,"integrity":"sha512-72XRU21GO1PN1WdT+rPLJ3UL+JzqnvoZwD5sEaAO7HCBNOcZOrly49DvqVJat90A05TTNdchTvQ1uhlv2o9wzQ==","signatures":[{"sig":"MEQCIA6U+lTo2Py2sk54uaExK0JrQBsveFZ+OoSEZC++Il7oAiAI2oQHEAmoFno85qGPuW/TqDBGfG5DS+ry6AJyu2SOJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13856534},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"a52ffd8882683d5fd6ca6d8dc316913345a8b32c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.258_1789666586485_0.3117594265772936","host":"s3://npm-registry-packages-npm-production"}},"1.2.259":{"name":"@camstack/addon-pipeline","version":"1.2.259","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.259","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"3f70187963b45512c398a74a773658066cb52f83","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.259.tgz","fileCount":131,"integrity":"sha512-sOk69TUl5rSVVCvL7AWhrmBFqncoKpVHTU6Ue8VhSIlsBF9chDkOB1L2weuTNh/vvlsMBJCqp6SmmGk84Eie6g==","signatures":[{"sig":"MEQCIAvLd/ADIrCx5HPhJaktN6KoVFse2XY+a9RJTG9FAAs3AiBGpSArsFgHlgTR+ZG37/qIGVGVsKEqW3/Iices3eP5IQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCQKPf/VqUa3nkotferbDBAyF5Jks4xT07LAxBOo7EN3gIgGOI2CT+1L496O5V0w3pa4/NAxqOSWU6aL/UcomDaUjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13890618},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4febf7167e2d32fc6c4a32242692946bccce7fd4","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.259_1789669097445_0.057038632941861955","host":"s3://npm-registry-packages-npm-production"}},"1.2.260":{"name":"@camstack/addon-pipeline","version":"1.2.260","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.260","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"acc2820b8376b9c389faa0eab6211f6aea3f8c2d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.260.tgz","fileCount":131,"integrity":"sha512-stpfT256VfeQt8FRAKwUfxQBPP1ySjhZr2kGPFUskjsbsJR26xE0vCzWqH7p8lrgy44C7VVF4dPZPFANUhgvGg==","signatures":[{"sig":"MEYCIQDK7ooFLX//mjbhdl+ui1h+bhteu3+pqDAeOwIzvtpn+gIhAMMXlioFHlhjG7FoLoHyERN9wmYgi5Eu1VBcn1DmygHs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCgCJbDL9QtAAffbqU9nLaQ5tId8wFny3IPHJ7UwoPaxwIgBL+O1LAuZzlvk2hJ735OSRevQQtEUryq4n62/oncL8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13891236},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"2f72b9b904c193da0b05dc27aa38f16de02a0d91","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.260_1789673820284_0.514385091580648","host":"s3://npm-registry-packages-npm-production"}},"1.2.261":{"name":"@camstack/addon-pipeline","version":"1.2.261","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.261","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"5c4808f7c185ba53f0a760e2469a56e21f061f82","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.261.tgz","fileCount":131,"integrity":"sha512-fCFc1YE3IA1bqy2UnnBksUHMAqPr406E3oDEl/k4QGJp+yEvTvFqLacq/d63Ia4xIQwSvec4pdxEPwzx2c5+ug==","signatures":[{"sig":"MEUCIQCjoXZRaJGiZ8ekdfwjoozW+ktEUCbWQLHVAwojWd9MCgIgD9GhOMaduf8h/RVypXwocIFd5LfnuuOjw1dN1lYv7IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCKluHvU59mDzRzAHs/xEsJKm5NTq4x84RDbfQGCnhLyQIgQ+1XhZklPr9zfl3zxWWi8lMBZlZJEnMgskBG1gIUqJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13891236},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bc85a9c1ac865c0dba3efb41315e272ca177da11","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.261_1789677069773_0.05704560902834155","host":"s3://npm-registry-packages-npm-production"}},"1.2.262":{"name":"@camstack/addon-pipeline","version":"1.2.262","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.262","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"b7d32ed715ccca4f3c7f983e582788ea64ecba9a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.262.tgz","fileCount":131,"integrity":"sha512-M8sJm9DuELKPHtJ0t3ovSdZXBVLjlTEa44KYKX+VoLock+biSMF9iOK1JYvEMaSbO04NNGoM2XEsJKML64crwA==","signatures":[{"sig":"MEUCIQDNXYOpfWLRXKDUpkRQI2yVGZCDdi7/4zRcnk6IMPbe/QIgOF/+Pa1GoZitfy/krMCTwbu96us0+U5+2kPnO7Kkf2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIANbviMREli0OExg4QODmLCwEmFdhM3a72UCZsPpg+QpAiEAvIjWxYeCqhlmE1ozr+lpv4/MComvLH/7NSgdfXwf7/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13891364},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"291e7eb57508dc574fc6d85c2016ae52c5abe4c8","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.262_1789710980229_0.32271670668287","host":"s3://npm-registry-packages-npm-production"}},"1.2.264":{"name":"@camstack/addon-pipeline","version":"1.2.264","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.264","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"4064434d38c190adaa7a78abd517877b2ccf4b22","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.264.tgz","fileCount":131,"integrity":"sha512-9PPv5O+PnhIqzKEcBnI2hhaU5x0fp5cioVsdjYlRkxG82HAfR/ocCqLRcFFS3+7LyxJZ/NQiIzwWjdDSfz3d9Q==","signatures":[{"sig":"MEUCIEDhydWVBYQSLDFWLuH5DUpexPCbG2VevdaU3sf6rH9JAiEA9aiY0oNfhgyDN9qWd/KkJP8pWrZ6z19Gnq7dNFqXdl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAh3KSQKb0jfTbeCbQgjyCaQYZ1i2JZCEenORBYx3knHAiEA9M+FX9vVHWoaxYuZ2hZlueX1klnyqM2InQULMwqUKRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13897050},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ab0fb551a63a362cd444bcae0257a52070b2410f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.264_1789718009383_0.8400447249533063","host":"s3://npm-registry-packages-npm-production"}},"1.2.263":{"name":"@camstack/addon-pipeline","version":"1.2.263","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.263","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"710e5ab59c32bb73932a1be7f2e353ba9f00fd82","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.263.tgz","fileCount":131,"integrity":"sha512-eLZ2FITGzP/XdCK00yenPb976x88jsUH7xsa+SX7bHc+SqWazVDYIwOYmbFSRHDaMt86TsNvkflAlx62fyQKdw==","signatures":[{"sig":"MEUCIHTzOc0S7YmbhNXyV1JrIgYK51gHfcdDqM/nLlr27CuxAiEA/mPeHorXwb9Sr3Y7K+4ncjn5brGl6QHoP/pLykp+qzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEMKVhftzI223Rzj6sVy+3kLgEfnDPZci6r0He0EGgKLAiBKS7SSprCgeMOOc61gZQTrY4sBs6dMvoM98fUVb++e/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13897050},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"4c22d2455de6f5d635222d98b36cb57d33174c63","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.263_1789719200220_0.17723128584897352","host":"s3://npm-registry-packages-npm-production"}},"1.2.265":{"name":"@camstack/addon-pipeline","version":"1.2.265","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.265","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"bada2af9f11b3465f5cfaf916d93a52db4769d04","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.265.tgz","fileCount":131,"integrity":"sha512-Sgp2/34FsdH7FUR7svRB2WBxgdNlxE3XItb2lVdrMNxghiXn21Oqg3Xjbi5N/9GkHkoYAbmfJopYnKiY6hMmEg==","signatures":[{"sig":"MEYCIQCzctAUvJ9M7ZDf3Kb0d0Snb9bqMaUwFe7dQMKRflLAFAIhAOJVsshTeyRz0cCfiVy9MYTkEQB219kq73DrbAlk1My8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBSdXLYEiPLvGQVK1FOMPlS/D+TdVp0BoURPSrnrXOcqAiEAmMqUtx5p9jOFXQP4w3crnp8ISRpuMJaxl2udP0mzzJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13902132},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"12db8473757ea11521a5d7a0491aa9de4b9dff43","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.265_1789721366041_0.49097169356829795","host":"s3://npm-registry-packages-npm-production"}},"1.2.266":{"name":"@camstack/addon-pipeline","version":"1.2.266","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.266","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"cf2b579041da731f40d094c67b9cf9c7ce893a9c","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.266.tgz","fileCount":131,"integrity":"sha512-6p4JqNVW+lc0w53HbJStdnmLAw6W6krAq6wevRN8lrmwPqhUtZwijPEVqPIlaqnu/qiyD/hup61R7lJX8kBCTg==","signatures":[{"sig":"MEUCIQDyax9LH+HQ4tMOHh5ln454Ss84njclU2fQtnAACorMxwIgEL7PMpUv5SGBf+aEsHkiYwyiW3E7THAT+2XzQPVsTuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGlUDnhYTkGdtyjUcstr5FR1VQkykus7C6GJxi6cFKPsAiEA9gYPzLLmjq1ES/tw/8zEaCoRvX8Nh8TfPXECdG0I6c4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13902642},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6c3e39cbdd7cad24d371010eaf8f8bb87c013974","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.266_1789725412198_0.775340467926461","host":"s3://npm-registry-packages-npm-production"}},"1.2.267":{"name":"@camstack/addon-pipeline","version":"1.2.267","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.267","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"1a39f9c8343858b4228a1202b1ff0eb1eccf67d4","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.267.tgz","fileCount":131,"integrity":"sha512-PKfwe72AGkTYW4xLjc9inBkaJpOW5pU4rMsuajQBtgCQqW8PQm6imlXEPT44E4h11K9r1ul7p4WpU9W9/kRQkQ==","signatures":[{"sig":"MEYCIQDuGPYkDUzXAzU0K5CuuIcaHxJgTyGq8DNpbbmaUfW8vwIhALRb0SCmfdUtp9tABbgqaSClAv2WCsAIE+Ce5Nxg+Yze","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCFwbGMJBpdYRJaVAzU3H4YBjm9LskdFoQKW51Go0mDaAIhAMNa1AeZhQaec15LvDLk6lX1B4b0OEAZrx9UItezIrem","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13908915},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"36ae105bca8cb33d4442dc22ff612718d0a52994","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.267_1789760076800_0.8141621731346893","host":"s3://npm-registry-packages-npm-production"}},"1.2.268":{"name":"@camstack/addon-pipeline","version":"1.2.268","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.268","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"e16fe37b8955cf9716d85c13b35bcb8a203afb93","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.268.tgz","fileCount":131,"integrity":"sha512-b08nkR9PtCqWv4nG+n1xyvyzQYXtW2DEoPVaKeKTKQimsMnNYq4Eqbbc7A9nzTGujq3b/eZP61fAweLYjHmlwQ==","signatures":[{"sig":"MEUCIE9oPh2EzgR9A9ZcHygFaVJdz+6dqHfYDt/NirvXs74AAiEA79dmeMrLy3ezeTMXmgCmmpyejQyll2hQLGflZZfeCcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDt3vJVLs6Tad6SOX4+RX5XxWLaab+hj+54oMPIzsf2dwIhAOsy/j58yZNpRL7Ea9nYdNDQRMmTztWUkEUohRPf/Mym","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13908692},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"6a21fbefa1f1274124c7e68abd8e313fde77a8ca","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.268_1789762506828_0.6965519596000433","host":"s3://npm-registry-packages-npm-production"}},"1.2.269":{"name":"@camstack/addon-pipeline","version":"1.2.269","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.269","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"3a94b7740a160ba29615ad7890c310ac3a0bfcc9","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.269.tgz","fileCount":132,"integrity":"sha512-9vkOJnvqMd449uJpS8Ef5bQghRQg2aFPmMb4wkM1w3GB/WXDEoRY/9r95AnOmN5HLoYfafiXbOIzlHE/1Iz2Kw==","signatures":[{"sig":"MEQCIG4/uXNm82hGvdOB0GDvC8RNTyNXgQXs/uJ1ChmxE6c2AiBETThmZCwDbyMO3z0WGNHh0Y3Xxg3AeXj+n8bOEdYFmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC7Uld8JPLun8R1jnvvTa89lSbff8BWu8tHtXVu66JYUwIhALKvzET5/Vr04LA/rXy+IPBUYAHYGw4wTOCjoGvS92cW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13968283},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"11e7771abc8ff5a5d38c6593cb0d6b3dd45f58f1","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.269_1789769356185_0.44705265181366416","host":"s3://npm-registry-packages-npm-production"}},"1.2.270":{"name":"@camstack/addon-pipeline","version":"1.2.270","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.270","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"154749c58d25a48dcc14ab4e2aadb102d8973209","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.270.tgz","fileCount":132,"integrity":"sha512-AYRFN48iVlX7uY1kPi0hYVyjqHFNJjk1NQqg2LyIMvkX0XrIWtJokTIxsyP97PIhdAjOyuNwaQs/5f5S6H3H9w==","signatures":[{"sig":"MEQCIBdeWws53h/X9TM2nEtG+GcqJ3BSZ4Qiy7qiP3i3sTQPAiAsvzTq2IygN3UYENJLq0YrdDj8tyjYoTx/hJhD1pAChw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHWNbHNMBx7RkFIMEqW8JSZtxJ/HA6Q6HqrxdLaf2tadAiEAnSenagiCk2Qt5MP83o2uVPa+ehx2ZXnP55T9irFU1mA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13974743},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"0d4aa23ecd2227d177666b633080d1804f7f8c9c","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.270_1789776628619_0.18269137219719056","host":"s3://npm-registry-packages-npm-production"}},"1.2.271":{"name":"@camstack/addon-pipeline","version":"1.2.271","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.271","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"15c03be64667f6c7c5f1ae9dfb71c275a362d4eb","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.271.tgz","fileCount":133,"integrity":"sha512-CLfUdogE8GGs2DMHcYZK61g3+gdoeTrPDZcAGSMX6rfUwJsUOEu4+XzNmj4kAUb7a3eL7yn4QjjNXhvL0PxYng==","signatures":[{"sig":"MEYCIQDCG1tipm1d5qLmiGBonCrZaXM9jZAeMtzGaFRUn3S2TQIhALTHOyi1fm0Muyw2/kFhNqoL7+SF19/V2UFdKXhMZ+lC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCm6vyze/7MHsdS2WqEq/ljqlau44jlT6FrEHoBbo4cXAIgcH+x9HprYsVnglg9RrY1LS6AzAyOCI6KIQUBj9INUZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13997307},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"e515aae440b3e3a9e02897c38c3dfd4dfc61fe95","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.271_1789847201567_0.2542659787907955","host":"s3://npm-registry-packages-npm-production"}},"1.2.272":{"name":"@camstack/addon-pipeline","version":"1.2.272","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.272","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"d1e944f22103946d0e3d861706343f0a1d2e19d0","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.272.tgz","fileCount":133,"integrity":"sha512-szF8YlpkDR1wyXFmY49N3sOcP1opm0z2iJFyQkks0JNJ/PE96qZEDgPahrltZt3UyYVERAWrB9RCA2+fVzReDA==","signatures":[{"sig":"MEYCIQDlNa/EQrG/zgT6n+kX419/Pnw0ysF7scWIe+126E0r7QIhAJJgUGbWUpfwrQ+kZA62nWPAX/T6V4jQgavDUjHIqpS+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCr+Ma7YIlJkZ+HFQnnZQ61QOZi3IRvxhx12oefVXbCAwIhAIGBijCb2ZYjgTd9OeBsmIYFix1j7Si3rNZJKS2+hjvc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14004520},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"84f2f1f9019985b5218a8e2008a0d66836eada00","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.272_1789895531000_0.22454108193772782","host":"s3://npm-registry-packages-npm-production"}},"1.2.273":{"name":"@camstack/addon-pipeline","version":"1.2.273","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.273","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"c95240ce266c9d34901268cb4d8fe26281857a8f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.273.tgz","fileCount":133,"integrity":"sha512-aHE7pa9dMDyZKXIPdKT3m795+VBLNZhBGkwr8rUz8T06Lj+ZnjMOMI3TyD1SIDN2f/LNzqlL0MOaQH0Wc1r39w==","signatures":[{"sig":"MEUCIQDRLGqBjZzMp7jTinqG8ZQh5MdsG5NveRPGgtbmFh6MXgIgVWVrXl2VVVx7vqgjpvKD7xqv2hUbKiSh78qOCc42cGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2Pt4t88Pa4FMf/3K1KXk/d7Pa0mDfGWn7p69OXDuSxAIhAOm8dWii7BWXBytdNVD33QyM/ulxvQafnZ20kO7QKwsD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14026903},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"ea5b80acd28a20990e1538230eb33a6e43198a5d","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.273_1789913784961_0.04111433785908147","host":"s3://npm-registry-packages-npm-production"}},"1.2.274":{"name":"@camstack/addon-pipeline","version":"1.2.274","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.274","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"ddd887dbaf85cb14031ebcfb000f7f07a2960d8e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.274.tgz","fileCount":133,"integrity":"sha512-uR6/fc9f0mEuyumJiIvWJ3ZsHVI6cWnn83tjoUcZtoj+b5UcPJ2aEP8Dlj5eZ79EEUQZ1M84Nuz7Pw6KlnvbZg==","signatures":[{"sig":"MEQCIBHTW1P6nVY/ox0sWIaT6V0CNAzzF8DoljmLlbjk8iM2AiARMZEDwsHA34Xqiy0anZXAppkJKpNVc4zBh5LTD9a8Gg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD5oWRvuiaqUv1Qi+sSyRqKwtuTibes3Agqx3B+RVW/0wIga3WFRouQOiUlL8Pk5jO06EGzZm/d/NvM76XrI5ffoTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14078979},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"260bb901a8e2a0b73df9e978a36762f17c970850","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.274_1789932586494_0.5865603568886777","host":"s3://npm-registry-packages-npm-production"}},"1.2.275":{"name":"@camstack/addon-pipeline","version":"1.2.275","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.275","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"89717c5086b1b64507f27e26a525b4da32b8870e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.275.tgz","fileCount":133,"integrity":"sha512-/8r1lF1w++pdYSqVZMvcjL29QLE+o688Wxxn8R8hwxn4dTs2+lp20LJm+MnqqnyfUZOk0QrOLoR8RiOVrdfbEw==","signatures":[{"sig":"MEQCIBc0Syr+hP0OTvTR607hpZ8HgvG68ni3VPRee/6ch9UIAiAsSnFuu3oDamzd0RZeFMTXt9FB5LbtG8WvqWl1kNU1ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA0ecK571n7TQt/SiPhVQaAaEwp+76IT1q25+gfikwW6AiEA7qUxKQr85H5ZUOAn139Mvp3I4JHoMsABjAvregikDXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14179825},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"bdae0dd0df979cf15fb5de92321d9540771ac2e5","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.275_1789967300305_0.10586606554272837","host":"s3://npm-registry-packages-npm-production"}},"1.2.276":{"name":"@camstack/addon-pipeline","version":"1.2.276","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.276","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"ff059cd75535f57ead2e7e55a0eed1eac2fa062f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.276.tgz","fileCount":133,"integrity":"sha512-jlPlUBSBIi8EelFwdpIeVpEdV+FFnTsK/p+UJJ6CDRn/7lSbuDVPzgfjDv+Nxpl3Blvpy0EN99UJuFzRFBvGJw==","signatures":[{"sig":"MEUCIFlFQSB+lUonVzEHwiyyNN2uvlXHgMnhol86rpMoJbK+AiEA//gKSOXmEMrCHuB0o+p0jdYx8Nzw82kV5G0qEhM3LEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID2uXzqYuJZMuYmhuuRIp0Q4V3fMvbhc0u4ZnK9a5My6AiBSundOibUpFPaZHd1afxT3ndpJqhKyieaHTb2F+HcQUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14185121},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b6b2e4cdd84898b05cfd24e49c4d6761e03f9c3f","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.276_1789974050557_0.9641488325068615","host":"s3://npm-registry-packages-npm-production"}},"1.2.279":{"name":"@camstack/addon-pipeline","version":"1.2.279","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.279","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"4347ed4ec66ece56ec34f14f9c81a5225cabc2c5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.279.tgz","fileCount":133,"integrity":"sha512-9ogCR23Rb4yLJt/WFHpoTk9wsLd+ifNCiEMxQueeAR7VwK0BvVPHnBK4/EBgkzDUgLj4408GwJ0RTW+qkCi/zg==","signatures":[{"sig":"MEUCIFzmyFcc7I5GCdQ3wtif9wL4V9iTdtezP0+8n5GSA419AiEA5KY+V1QwlPq2ioJebGVW/rfK8j5LZKG1rOsDiOkqz8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC+SYlOCDPckCuFd3MV10JZMs2rWp3S3KEWLljLFqIzAAiBoo1LoKR5scMZ/WjFdQ/xIvi0MlUzE4dfBoMX2cG+11g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14187997},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9c7c6dfa281ff8385d64af60b777c56c74d40f04","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.279_1789983139674_0.7056641403127097","host":"s3://npm-registry-packages-npm-production"}},"1.2.282":{"name":"@camstack/addon-pipeline","version":"1.2.282","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.282","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"7dfbd4bcb775f8737d4811a320392d40cfc1aa8f","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.282.tgz","fileCount":133,"integrity":"sha512-g8YVzUNbrYOooZb3Ajowy0n9J9LVAbFtYdkCxoXQ23czM7LAn+mLO+FSVQ95flDgn3NwwwXcbqpUxTxAhIjjTg==","signatures":[{"sig":"MEUCIQCcO5BULL3i8Iatn7FalgEp83tMvWULixY+rAbAKLH3NQIgItkmgxvVDZmNe8sEFLtuGykVdBtIw5LPmxO4WWJopzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCPvPy6MowIcKQFT2q/9w+f0947SS4qjbdURPABbcvwXgIgSyMi4N+CDZ7K7gu1w7iMo7ZfG2Dpx41RC8Vc0WeH818=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14218508},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"1567807424be38682ee8ab9bc8ab2881b27bf680","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.282_1790025555177_0.11013305717365918","host":"s3://npm-registry-packages-npm-production"}},"1.2.283":{"name":"@camstack/addon-pipeline","version":"1.2.283","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.283","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"3aaed4a727390983f5827afb119accb0d56d8a9e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.283.tgz","fileCount":133,"integrity":"sha512-QAhXn+z7DbYoRP/x/mRMuYFyGFfUdcf+2Tgla/+2jNSN8l4EP2zWWhUi2zuOdt4wqCOEX4fyeArglrkCCim5mQ==","signatures":[{"sig":"MEYCIQDgjVpzsPImA8Mr1C6/dvReuUeRdulfdWNCCgS5ZAuGFwIhAJeqZKO+MqkNlK3ASMTE5e+lzjPcjPi1Sh34WVHNU9on","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHHbfXAmleKtBQINzURMBRYb5xhDaldz1jZD+de8xYyMAiA4mex3dW833CgmSpQMzdde9hKLbK9kgSFS2/gJGAibkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14218450},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"97330458d52a0bad751c208210ccad1ffae40b91","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.283_1790042448299_0.6637293808957341","host":"s3://npm-registry-packages-npm-production"}},"1.2.284":{"name":"@camstack/addon-pipeline","version":"1.2.284","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.284","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"da54c2db8793ea9d6167108010ba390bc9e2ba4d","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.284.tgz","fileCount":133,"integrity":"sha512-cwoyjE9wcWulma87Zgp0sTLI0mEiG0u/49OdgupJ1Jx4mPjxxvSNAt/4HnmAjMKOJVjwIG+JkoY9uXcw+P+5tw==","signatures":[{"sig":"MEUCIQCyVFrKrRMgayyhKj9029BKNckAnfsVcgqvVZsenHm3kwIgXDIoAEXruZqhfXjdJxeW9DfO1qgR5x3wc531mK53Sx8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDKr3FISHZkAMWxQpmm56xJhhztCcaTG641o2G/qCKLbgIhAOiQ9rhiPFwqaTbcU7KRjX35kaedFQcjZl4zmg3wWIYv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14222648},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"b213a6c14d64dd572f152a1105b0bf899e587f0a","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.284_1790076358076_0.3927063826392654","host":"s3://npm-registry-packages-npm-production"}},"1.2.285":{"name":"@camstack/addon-pipeline","version":"1.2.285","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.285","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"9a097135f1e1611f3e3b2fb537b48e4a8d1cd7e5","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.285.tgz","fileCount":133,"integrity":"sha512-SMNFL7t+IcmXK59BazY3dH3jREs7EbovzF3eHwLDvPvwPteUjET3RHFlNH+CHtZEyJiyyoP0P9+lKlLFJ+EDMQ==","signatures":[{"sig":"MEUCIHei+ieknfvlgZSpet5UsatO5y3eDhrjtRT0h075lyfuAiEApxVUlb/34rf2Q3Gla0b9+P7qxEFUHNl+9yBRe9bHGbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCHsH6+uW6Dog4o+PdNUPoj+O+/+UC5Cv3A4x3S4CWZGwIhAIYh43dyZIUjerAFwsuH+C88ST/naRe2WgWvQ6Z39KoN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14407643},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"795352ac66a0c88ddbfc78b2789e4d761b315a6b","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.285_1790091542183_0.6584342473015619","host":"s3://npm-registry-packages-npm-production"}},"1.2.286":{"name":"@camstack/addon-pipeline","version":"1.2.286","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.286","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"8b06a2515d337f99185d3f871f68fcfddcf04677","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.286.tgz","fileCount":133,"integrity":"sha512-fdpjS4ZAAo+YvcAoExA1TNnVy9techt45sLbawgwXNP0Pc6ID5IJuRtXyQUryJP0Qb+ajaVoI79iZV2kA8Zt0Q==","signatures":[{"sig":"MEUCIANlomFn+1RhEQ7FVZHrcWBSImo4ixphyojMiz/GUDjVAiEAmYQMztGETJSyZ+iiKb1r0XQkN5SzAPmDshU8EZ5blaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGeNuVuBtvZSniLZVOly3uiHa1glIDTcMpbkgrx1p/b7AiBN7bEz9ASUPruL8C9yZMtJFKhQyAJAd3uo0vMyOE15aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14415974},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"fe9b6f3da2c5eb22ded0eee8872942543699a8de","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.286_1790092150513_0.6753593751620186","host":"s3://npm-registry-packages-npm-production"}},"1.2.287":{"name":"@camstack/addon-pipeline","version":"1.2.287","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.287","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"ef1d1f3983f48e78e280509373cfa5ae9f1e9550","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.287.tgz","fileCount":133,"integrity":"sha512-yOGmyiOuZOmbPLzpwy6LYmVSW0jKp1iL8WpTrH1GQKJnT8555YRW30Kbw3o/vIZTvpxuV5fEUeLSru9aBe2ghw==","signatures":[{"sig":"MEYCIQDYtpr8xAySTaATmOGbDgk6YvQRjJIFrQHa6osqbHdDbAIhAKzgBcgn4EcfGHy/LBnoqbO8cOKFNOp+ZMBV5Iczca8F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHzgkOT2tnApbVw36Hw6WDZhpIS7y+RHSjLUBa+WP9MJAiB83Epq92PW3LMpdOuAEy/6OCJExUEB7ucbNzLIcp45Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14452372},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"8357ee8ac7ecba4f7cbd64fa5d6d53cfde52c306","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.287_1790116052697_0.2805514434972065","host":"s3://npm-registry-packages-npm-production"}},"1.2.288":{"name":"@camstack/addon-pipeline","version":"1.2.288","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.288","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"3d77da23430d74506c15c2c557765097ad0aa176","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.288.tgz","fileCount":133,"integrity":"sha512-veLUhVMzM0lQaPTyaFs/zdognroJ1Xp+kZvreWcE2kobHod3MmoIA0Js5Qayas3qtnCXTUf/GEaLzlOhQThTHA==","signatures":[{"sig":"MEYCIQD2bcCdyYyaCKhsUn2Qn3DpM0BBPj9kMFDHYS+s/jXJuQIhAKdcGBUerQG4pSERe0elC5BdcFAu7+kqmjlR59Bkryfl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCYhSCX1kks7bpq6084cwN3QoMPvyKf+hRz+xJuK+vJoQIhAMlJXAbFLQf5Wdr2ecSEwkUuXHLxMy4WJPpbCX+kqQlb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14483949},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"c923db766e03a581656013c62b431040a27b8279","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording","optional":true},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.288_1790161642076_0.16451043242248686","host":"s3://npm-registry-packages-npm-production"}},"1.2.290":{"name":"@camstack/addon-pipeline","version":"1.2.290","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.290","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"a7e45c73acfaa12a6d5538ccb8ac78456db8291e","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.290.tgz","fileCount":133,"integrity":"sha512-5HQPt1B7Bedou9Um0thXW4pvMjNLPuaBS5EgZp4ja+AzKA5uSGu40ItOpUEBN/LSufPoaTCQ6GXIG2n+4ksUmg==","signatures":[{"sig":"MEYCIQCJ4oLftH6LFuAz0TE6Vgh7uvEYG6KySmHjW2VJU0YJRgIhAJH+cPaIDyJpq5lYqpxhCC0jwP7doL8kSB+dCs4loPSp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAgQlcIg2b5436uFk4Yc+IvZ2y4stMQtgmYDDLRUhI+vAiEA7lg5xHR83KrVm/Ayk8AgAGaRQp69zqOwqoaCZIafRy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14561495},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"9e1acb213f093dd87f19031ce5ea210ac309e14e","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"recording-archive"},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.290_1790259699970_0.3818420982516144","host":"s3://npm-registry-packages-npm-production"}},"1.2.291":{"name":"@camstack/addon-pipeline","version":"1.2.291","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"license":"MIT","_id":"@camstack/addon-pipeline@1.2.291","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"homepage":"https://github.com/camstack/server#readme","bugs":{"url":"https://github.com/camstack/server/issues"},"nx":{"implicitDependencies":["@camstack/shm-ring"]},"dist":{"shasum":"d4207de4a47f1da38197f63d2945112fa2160996","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.291.tgz","fileCount":133,"integrity":"sha512-56g7snbhYLShLVAQ9W5+JtlckKeDIoWNxUuZ8ekbYHhuI3hE3ijyYT2uK4jpN6Nc7jYrgR8MrBqTBWkvIqfhZg==","signatures":[{"sig":"MEUCID4lDd9nEzMGDXwDOinX2eZfl6LmAoEKqm2joa/9Kb5WAiEAqfLxBMP7Yj8I43oGnnxzfoFqupiM79WbQYfOJZa3ozU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG7l47G1OxgbKVYZMFxM7qaEiTt9v0KiG5mCXjtVKzHiAiAhqrygrEEsRo/gxuVQ67p+joK3tyFUXdikYabZ1KOb1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14664302},"main":"./dist/pipeline-runner/index.js","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"da8cb4506ec7a70b3d29aaa687a664f34b36b4fe","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"recording-archive"},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"tmp":"tmp/addon-pipeline_1.2.291_1790362709802_0.8317462104662856","host":"s3://npm-registry-packages-npm-production"}},"1.2.292":{"nx":{"implicitDependencies":["@camstack/shm-ring"]},"_id":"@camstack/addon-pipeline@1.2.292","bugs":{"url":"https://github.com/camstack/server/issues"},"dist":{"shasum":"6feabb50a78d1f38acb278ef51b9174c4f70020a","tarball":"https://registry.npmjs.org/@camstack/addon-pipeline/-/addon-pipeline-1.2.292.tgz","fileCount":133,"integrity":"sha512-YHMcL39nclboGO86WB4ESIeL4jHEj/T9Ebp6ZQ+z+TChEkvkRKRuMljR0yxQU6hg7yn1CpPHNaZEI5Urh4SEEw==","signatures":[{"sig":"MEYCIQCj4g2SBScWiHC9C3HTHPPpG7QZ4DutZLxF500MIprAlAIhAKwmtiXibre+2i9kofMc0f0RzCyQPoJijguRso4PZmuN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICT+u9JaRMxYPZpkrWh+v96Lkq19m8HQ9XF6/DtDlVOJAiB4JranWe4j6FuWDS2bxQYI6f96HJg/3iqMTt0JldPRqA=="}],"unpackedSize":14664302},"main":"./dist/pipeline-runner/index.js","name":"@camstack/addon-pipeline","exports":{"./recorder":{"import":"./dist/recorder/index.mjs","require":"./dist/recorder/index.js"},"./motion-wasm":{"import":"./dist/motion-wasm/index.mjs","require":"./dist/motion-wasm/index.js"},"./package.json":"./package.json","./stream-broker":{"import":"./dist/stream-broker/index.mjs","require":"./dist/stream-broker/index.js"},"./audio-analyzer":{"import":"./dist/audio-analyzer/index.mjs","require":"./dist/audio-analyzer/index.js"},"./pipeline-runner":{"import":"./dist/pipeline-runner/index.mjs","require":"./dist/pipeline-runner/index.js"},"./detection-pipeline":{"import":"./dist/detection-pipeline/index.mjs","require":"./dist/detection-pipeline/index.js"}},"gitHead":"da8cb4506ec7a70b3d29aaa687a664f34b36b4fe","license":"MIT","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build && vite build --config vite.widgets.stream-broker.config.ts","typecheck":"tsc --noEmit","test:embed":"vitest run -c embed/vitest.config.ts","publish:npm":"npm publish --access public","build:server":"vite build","build:widgets":"vite build --config vite.widgets.stream-broker.config.ts"},"version":"1.2.292","_npmUser":{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"},"camstack":{"addons":[{"id":"pipeline-runner","icon":"assets/icon.svg","name":"Pipeline Runner","color":"#0ea5e9","entry":"./dist/pipeline-runner/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"Per-node detection scheduler — manages frame queues, semaphore, motion drain, and inference dispatch for cameras assigned by the orchestrator","capabilities":[{"name":"pipeline-runner"},{"name":"load-contribution"},{"name":"failure-contribution"}]},{"id":"detection-pipeline","icon":"assets/icon.svg","name":"Detection Pipeline","color":"#0ea5e9","entry":"./dist/detection-pipeline/index.js","python":{"requirements":"./python/requirements.txt"},"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy","rssBudgetMb":1536},"protected":true,"description":"Unified detection pipeline — object detection, face/plate recognition, classification, segmentation","capabilities":[{"name":"pipeline-executor"},{"name":"detection-pipeline"},{"name":"load-contribution"}]},{"id":"motion-wasm","icon":"assets/icon.svg","name":"Motion Detection (WASM)","color":"#0ea5e9","entry":"./dist/motion-wasm/index.js","passive":true,"version":"0.1.0","category":"pipeline","execution":{"group":"detection","placement":"any-node","heapProfile":"heavy"},"protected":true,"description":"WASM-accelerated motion detection with blur, dilation, and connected component labeling","capabilities":[{"name":"motion-detection"}],"defaultConfig":{"minArea":3000,"threshold":45,"blurRadius":1,"dilateRadius":4}},{"id":"audio-analyzer","icon":"assets/icon.svg","name":"Audio Analyzer","color":"#0ea5e9","entry":"./dist/audio-analyzer/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":512},"protected":true,"description":"Audio level metering (dB/RMS) with optional classification","capabilities":[{"name":"audio-analyzer"},{"name":"audio-analysis"}]},{"id":"stream-broker","icon":"assets/icon.svg","name":"Stream Broker","color":"#0ea5e9","entry":"./dist/stream-broker/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":2048},"protected":true,"capabilities":[{"name":"stream-broker"},{"name":"camera-streams"},{"name":"webrtc-session"},{"name":"addon-widgets-source"},{"name":"log-channels"},{"name":"load-contribution"}]},{"id":"recorder","icon":"assets/icon.svg","name":"Recorder","color":"#0ea5e9","entry":"./dist/recorder/index.js","version":"0.1.0","category":"pipeline","execution":{"placement":"any-node","heapProfile":"heavy","rssBudgetMb":3584,"maxOldSpaceMb":3072},"protected":true,"description":"Continuous, local, filesystem-native camera recording — passthrough ffmpeg segmenter per profile with a RAM index and HLS variant/master playlists","capabilities":[{"name":"recording"},{"name":"recording-archive"},{"name":"videoclips","optional":true},{"name":"recording-export","optional":true},{"name":"storage-evictable","optional":true},{"name":"storage-occupancy","optional":true},{"name":"load-contribution"}],"storageLocations":[{"id":"recordings","cardinality":"multi","defaultRoot":"media","displayName":"Recordings"},{"id":"recordingsLow","defaultsTo":"recordings","cardinality":"multi","description":"Low-res + scrub stream.","displayName":"Recordings (Low)"},{"id":"artifacts","cardinality":"single","defaultRoot":"media","description":"Notification artifacts (stills, GIFs, clips, timelapses behind signed links and the viewer's artifact library), operator-exported video clips, and the enrolled gallery (face/plate reference crops and scene photographs), in disjoint subtrees of ONE root. Each tenant keeps its OWN retention — the notification shelf's bounds (6 h send scratch; 14 d / 2000 / 2 GiB retained), per-export expiry + delete-after-download, and NONE for the gallery (enrolled samples survive every sweep) — and no media-class retention may attach to any of them. Exactly ONE location (singleton). Not part of the system backup, gallery included — a deliberate operator decision: media locations are operator-managed; a remote-media-backup cap is the intended future answer.","displayName":"Artifacts"}]}],"bundle":{"description":"Detection, motion, audio + stream broker.","displayName":"Pipeline"},"displayName":"Pipeline","nativeDependencies":{},"runtimeDependencies":["werift"]},"homepage":"https://github.com/camstack/server#readme","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"_npmVersion":"11.13.0","description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","directories":{},"maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.3.6","sharp":"^0.35.2","mp4box":"0.5.4","node-av":"^6.0.0","opus-decoder":"^0.7.11","@camstack/system":"*"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.11","jsdom":"^29.0.1","vitest":"^3.2.4","typescript":"~6.0.3","tailwindcss":"^4.2.0","@types/react":"^19.1.0","lucide-react":"^0.576.0","@camstack/sdk":"*","@camstack/types":"*","@types/react-dom":"^19.1.0","@tailwindcss/vite":"^4.2.0","@trpc/react-query":"^11.16.0","@camstack/ui-library":"*","@vitejs/plugin-react":"^6.0.2","@tanstack/react-query":"^5.90.0","@testing-library/react":"^16.3.2","@module-federation/vite":"^1.16.9","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","werift":"0.22.9","react-dom":">=18","@camstack/types":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/addon-pipeline_1.2.292_1790364245777_0.17057356664786738"}}},"time":{"created":"2026-05-12T12:50:13.189Z","modified":"2026-09-25T19:24:06.228Z","0.1.0":"2026-03-25T17:02:52.718Z","0.1.1":"2026-03-28T14:38:32.561Z","0.1.2":"2026-03-28T16:57:00.219Z","0.1.3":"2026-03-28T17:19:55.642Z","0.1.4":"2026-03-28T18:31:31.434Z","0.1.5":"2026-03-28T18:40:26.245Z","0.1.6":"2026-03-28T18:42:19.316Z","0.1.7":"2026-03-28T18:44:53.970Z","0.1.8":"2026-05-12T12:50:13.591Z","0.1.9":"2026-05-12T13:44:51.693Z","0.1.10":"2026-05-13T08:07:02.965Z","0.1.11":"2026-05-13T21:01:15.027Z","0.1.12":"2026-05-14T18:17:14.282Z","0.1.13":"2026-05-15T13:52:18.639Z","0.1.14":"2026-05-15T18:12:40.196Z","0.1.15":"2026-05-20T21:58:40.116Z","0.1.16":"2026-05-20T22:19:23.519Z","0.1.17":"2026-05-21T06:23:44.371Z","0.1.18":"2026-05-21T14:58:38.232Z","0.1.19":"2026-05-27T15:27:37.370Z","0.1.20":"2026-06-13T14:05:17.930Z","0.2.0":"2026-06-20T16:10:23.920Z","0.2.1":"2026-06-20T17:28:34.650Z","0.2.2":"2026-06-20T19:04:00.980Z","1.0.0":"2026-06-20T19:35:27.482Z","1.0.1":"2026-06-21T11:36:33.416Z","1.0.2":"2026-06-22T10:44:44.370Z","1.0.3":"2026-06-22T15:24:46.722Z","1.0.4":"2026-06-22T20:55:04.412Z","1.0.5":"2026-06-24T13:54:25.711Z","1.0.6":"2026-06-25T07:19:42.921Z","1.0.7":"2026-06-25T18:15:34.784Z","1.0.8":"2026-06-26T14:14:04.703Z","1.1.0":"2026-06-27T06:49:52.280Z","1.1.1":"2026-06-28T07:31:16.827Z","1.1.2":"2026-06-28T09:53:45.766Z","1.1.3":"2026-06-28T12:45:48.039Z","1.1.4":"2026-06-28T14:54:54.572Z","1.1.5":"2026-06-28T21:10:21.800Z","1.1.6":"2026-06-29T05:00:16.038Z","1.1.7":"2026-06-29T10:38:03.800Z","1.1.8":"2026-06-29T11:07:25.891Z","1.1.9":"2026-06-29T14:27:36.788Z","1.1.10":"2026-06-30T15:47:24.293Z","1.1.11":"2026-06-30T19:56:19.928Z","1.1.12":"2026-07-01T01:01:09.780Z","1.1.13":"2026-07-01T09:25:12.949Z","1.1.14":"2026-07-01T17:57:50.991Z","1.1.15":"2026-07-01T21:49:04.420Z","1.1.16":"2026-07-02T07:36:54.864Z","1.1.17":"2026-07-02T08:03:24.927Z","1.1.18":"2026-07-02T08:28:52.239Z","1.1.19":"2026-07-02T12:47:18.697Z","1.1.20":"2026-07-02T16:38:26.883Z","1.1.21":"2026-07-02T19:44:08.592Z","1.1.22":"2026-07-03T15:27:17.575Z","1.1.23":"2026-07-03T17:35:35.294Z","1.1.24":"2026-07-04T01:52:08.169Z","1.1.25":"2026-07-04T03:51:51.470Z","1.1.26":"2026-07-04T12:58:32.328Z","1.1.27":"2026-07-04T14:58:33.758Z","1.1.28":"2026-07-05T05:47:36.114Z","1.1.29":"2026-07-05T13:48:18.451Z","1.1.30":"2026-07-05T16:38:10.430Z","1.1.31":"2026-07-05T17:30:10.447Z","1.1.32":"2026-07-05T20:09:23.274Z","1.1.33":"2026-07-06T16:54:43.733Z","1.1.34":"2026-07-06T20:48:20.734Z","1.1.35":"2026-07-07T05:57:13.542Z","1.1.36":"2026-07-07T06:05:23.702Z","1.1.37":"2026-07-07T08:48:46.785Z","1.1.38":"2026-07-07T10:37:28.390Z","1.1.39":"2026-07-07T10:48:53.328Z","1.1.40":"2026-07-08T21:51:09.360Z","1.1.41":"2026-07-09T08:37:55.411Z","1.1.42":"2026-07-09T10:31:08.727Z","1.1.43":"2026-07-09T11:53:10.440Z","1.1.44":"2026-07-10T21:35:02.763Z","1.1.45":"2026-07-11T11:21:28.778Z","1.1.46":"2026-07-12T14:04:38.321Z","1.1.47":"2026-07-12T20:06:30.440Z","1.1.48":"2026-07-13T07:34:47.558Z","1.1.49":"2026-07-13T11:12:55.884Z","1.1.50":"2026-07-13T11:30:48.891Z","1.1.51":"2026-07-13T13:05:49.048Z","1.1.52":"2026-07-13T20:43:47.237Z","1.1.53":"2026-07-14T06:10:16.162Z","1.1.54":"2026-07-14T09:52:52.372Z","1.1.55":"2026-07-14T19:23:54.453Z","1.1.56":"2026-07-15T18:43:43.854Z","1.1.57":"2026-07-16T13:05:08.476Z","1.1.58":"2026-07-16T20:42:57.949Z","1.1.59":"2026-07-17T11:52:55.300Z","1.1.60":"2026-07-17T16:44:09.443Z","1.1.61":"2026-07-17T20:14:14.082Z","1.1.62":"2026-07-17T21:45:57.670Z","1.1.63":"2026-07-18T02:54:20.735Z","1.1.64":"2026-07-18T03:50:33.662Z","1.1.65":"2026-07-18T09:47:06.779Z","1.1.66":"2026-07-19T14:54:06.683Z","1.1.67":"2026-07-19T21:50:57.200Z","1.1.68":"2026-07-19T21:59:23.240Z","1.1.69":"2026-07-20T09:46:42.976Z","1.1.70":"2026-07-20T10:42:31.299Z","1.1.71":"2026-07-20T21:40:48.199Z","1.2.0":"2026-07-21T12:24:51.387Z","1.2.1":"2026-07-21T15:48:48.407Z","1.2.2":"2026-07-21T18:47:00.928Z","1.2.3":"2026-07-21T20:01:20.792Z","1.2.4":"2026-07-21T23:48:49.566Z","1.2.5":"2026-07-22T08:40:13.293Z","1.2.6":"2026-07-22T16:59:51.808Z","1.2.7":"2026-07-23T03:56:46.076Z","1.2.8":"2026-07-25T18:03:46.414Z","1.2.9":"2026-07-26T06:40:03.816Z","1.2.10":"2026-07-26T11:40:45.125Z","1.2.11":"2026-07-26T11:54:08.432Z","1.2.12":"2026-07-26T17:40:03.253Z","1.2.13":"2026-07-27T12:52:18.084Z","1.2.14":"2026-07-27T22:25:37.789Z","1.2.15":"2026-07-28T07:27:25.241Z","1.2.16":"2026-07-28T08:36:14.076Z","1.2.17":"2026-07-28T08:52:18.670Z","1.2.18":"2026-07-28T09:06:58.508Z","1.2.19":"2026-07-28T10:20:08.036Z","1.2.27":"2026-07-30T17:00:34.714Z","1.2.28":"2026-07-30T19:02:35.771Z","1.2.29":"2026-07-31T08:30:18.549Z","1.2.31":"2026-08-01T09:40:25.426Z","1.2.36":"2026-08-01T23:48:37.561Z","1.2.37":"2026-08-02T07:23:46.441Z","1.2.38":"2026-08-02T07:34:12.806Z","1.2.39":"2026-08-03T16:48:48.272Z","1.2.40":"2026-08-04T08:42:00.795Z","1.2.41":"2026-08-05T15:01:11.039Z","1.2.42":"2026-08-06T16:52:52.984Z","1.2.43":"2026-08-06T22:47:03.433Z","1.2.44":"2026-08-07T18:47:17.916Z","1.2.45":"2026-08-07T22:08:38.921Z","1.2.46":"2026-08-08T01:49:08.103Z","1.2.47":"2026-08-08T09:12:18.358Z","1.2.48":"2026-08-08T17:37:27.055Z","1.2.49":"2026-08-08T21:37:29.376Z","1.2.50":"2026-08-08T22:47:58.203Z","1.2.51":"2026-08-08T23:11:25.227Z","1.2.52":"2026-08-09T01:11:05.450Z","1.2.53":"2026-08-10T08:14:52.181Z","1.2.54":"2026-08-10T10:09:33.740Z","1.2.57":"2026-08-10T12:42:02.938Z","1.2.58":"2026-08-10T13:49:58.231Z","1.2.59":"2026-08-10T14:58:25.001Z","1.2.60":"2026-08-10T15:28:14.018Z","1.2.61":"2026-08-10T18:51:46.423Z","1.2.62":"2026-08-10T21:20:15.875Z","1.2.63":"2026-08-10T21:57:14.549Z","1.2.64":"2026-08-11T11:29:48.133Z","1.2.65":"2026-08-12T07:29:59.563Z","1.2.67":"2026-08-12T10:17:34.677Z","1.2.68":"2026-08-12T11:01:15.969Z","1.2.69":"2026-08-12T12:29:53.437Z","1.2.70":"2026-08-13T00:21:36.498Z","1.2.71":"2026-08-13T08:25:41.988Z","1.2.72":"2026-08-13T13:32:26.897Z","1.2.73":"2026-08-13T18:20:34.449Z","1.2.74":"2026-08-13T20:55:26.186Z","1.2.75":"2026-08-14T10:06:07.815Z","1.2.76":"2026-08-14T14:17:23.899Z","1.2.77":"2026-08-14T21:07:41.890Z","1.2.78":"2026-08-14T23:08:30.370Z","1.2.79":"2026-08-15T07:17:28.393Z","1.2.80":"2026-08-15T10:40:49.867Z","1.2.81":"2026-08-15T11:42:13.088Z","1.2.82":"2026-08-15T13:38:30.229Z","1.2.83":"2026-08-15T14:48:32.126Z","1.2.84":"2026-08-15T15:35:01.218Z","1.2.85":"2026-08-15T15:39:50.432Z","1.2.86":"2026-08-15T18:18:10.671Z","1.2.87":"2026-08-16T07:31:53.930Z","1.2.88":"2026-08-16T08:24:44.206Z","1.2.89":"2026-08-16T20:26:18.946Z","1.2.90":"2026-08-17T06:13:05.697Z","1.2.93":"2026-08-17T20:30:23.785Z","1.2.94":"2026-08-18T11:15:23.497Z","1.2.95":"2026-08-18T17:20:05.741Z","1.2.96":"2026-08-18T18:31:24.785Z","1.2.97":"2026-08-19T05:24:04.828Z","1.2.98":"2026-08-19T12:39:28.371Z","1.2.99":"2026-08-19T14:15:21.228Z","1.2.100":"2026-08-19T17:23:46.458Z","1.2.101":"2026-08-19T20:08:30.082Z","1.2.102":"2026-08-19T22:31:26.857Z","1.2.103":"2026-08-20T06:59:33.621Z","1.2.104":"2026-08-21T10:55:13.715Z","1.2.105":"2026-08-21T21:40:44.398Z","1.2.106":"2026-08-22T06:05:06.600Z","1.2.107":"2026-08-22T08:37:07.603Z","1.2.115":"2026-08-23T15:29:21.915Z","1.2.118":"2026-08-23T22:47:21.307Z","1.2.119":"2026-08-24T13:00:12.648Z","1.2.120":"2026-08-24T19:55:16.789Z","1.2.121":"2026-08-25T06:58:04.185Z","1.2.122":"2026-08-25T07:17:13.018Z","1.2.123":"2026-08-25T09:26:24.311Z","1.2.124":"2026-08-25T09:48:48.557Z","1.2.125":"2026-08-25T12:29:04.758Z","1.2.126":"2026-08-25T13:39:34.769Z","1.2.127":"2026-08-25T15:24:05.828Z","1.2.128":"2026-08-25T17:33:11.614Z","1.2.129":"2026-08-25T20:30:47.723Z","1.2.130":"2026-08-26T14:57:21.244Z","1.2.131":"2026-08-26T20:43:05.936Z","1.2.132":"2026-08-26T22:34:47.161Z","1.2.133":"2026-08-27T09:42:31.926Z","1.2.134":"2026-08-27T11:32:34.764Z","1.2.135":"2026-08-27T15:08:48.694Z","1.2.136":"2026-08-27T16:10:24.879Z","1.2.137":"2026-08-27T20:32:53.565Z","1.2.138":"2026-08-28T08:48:48.969Z","1.2.139":"2026-08-28T10:54:37.984Z","1.2.140":"2026-08-28T15:29:14.811Z","1.2.141":"2026-08-29T08:27:31.799Z","1.2.142":"2026-08-29T10:52:49.920Z","1.2.143":"2026-08-29T12:27:09.795Z","1.2.144":"2026-08-29T12:45:00.406Z","1.2.145":"2026-08-29T15:39:53.371Z","1.2.146":"2026-08-29T17:31:14.246Z","1.2.148":"2026-08-29T21:26:11.891Z","1.2.149":"2026-08-29T22:34:44.600Z","1.2.151":"2026-08-30T10:01:14.821Z","1.2.152":"2026-08-30T15:35:14.621Z","1.2.153":"2026-08-30T18:05:20.897Z","1.2.154":"2026-08-30T19:56:22.341Z","1.2.155":"2026-08-31T09:22:49.955Z","1.2.156":"2026-08-31T14:23:34.848Z","1.2.159":"2026-09-01T11:31:06.374Z","1.2.160":"2026-09-01T14:00:25.166Z","1.2.161":"2026-09-01T16:38:11.221Z","1.2.162":"2026-09-01T20:08:59.048Z","1.2.163":"2026-09-02T09:36:40.821Z","1.2.164":"2026-09-02T16:31:33.824Z","1.2.165":"2026-09-02T17:03:10.714Z","1.2.166":"2026-09-02T18:39:54.879Z","1.2.167":"2026-09-02T21:17:02.804Z","1.2.168":"2026-09-03T09:55:54.638Z","1.2.169":"2026-09-03T18:52:56.691Z","1.2.170":"2026-09-03T21:00:20.169Z","1.2.171":"2026-09-03T22:20:54.277Z","1.2.172":"2026-09-04T10:47:14.241Z","1.2.173":"2026-09-04T14:17:56.382Z","1.2.174":"2026-09-04T15:58:57.052Z","1.2.175":"2026-09-04T19:44:05.988Z","1.2.176":"2026-09-04T21:41:17.511Z","1.2.177":"2026-09-05T05:30:56.159Z","1.2.178":"2026-09-05T07:54:02.260Z","1.2.179":"2026-09-05T13:00:35.680Z","1.2.180":"2026-09-05T14:38:11.624Z","1.2.181":"2026-09-05T15:36:34.887Z","1.2.182":"2026-09-05T16:13:27.566Z","1.2.183":"2026-09-05T17:07:37.076Z","1.2.184":"2026-09-05T17:51:23.788Z","1.2.185":"2026-09-05T20:11:37.428Z","1.2.186":"2026-09-05T21:44:13.214Z","1.2.187":"2026-09-05T23:19:34.881Z","1.2.188":"2026-09-06T05:34:54.794Z","1.2.189":"2026-09-06T06:47:05.308Z","1.2.190":"2026-09-06T08:20:50.992Z","1.2.191":"2026-09-06T09:37:05.390Z","1.2.192":"2026-09-06T12:16:25.316Z","1.2.193":"2026-09-06T17:59:07.984Z","1.2.194":"2026-09-06T18:54:26.424Z","1.2.195":"2026-09-06T21:44:19.517Z","1.2.196":"2026-09-07T08:39:07.649Z","1.2.197":"2026-09-07T09:41:11.907Z","1.2.198":"2026-09-07T11:08:52.021Z","1.2.199":"2026-09-07T12:25:49.684Z","1.2.200":"2026-09-07T12:55:33.110Z","1.2.201":"2026-09-07T16:05:52.394Z","1.2.202":"2026-09-07T16:31:56.620Z","1.2.203":"2026-09-07T20:10:16.048Z","1.2.204":"2026-09-07T20:33:07.764Z","1.2.205":"2026-09-07T21:16:29.060Z","1.2.206":"2026-09-07T22:36:46.347Z","1.2.207":"2026-09-07T23:14:25.834Z","1.2.208":"2026-09-08T07:01:24.004Z","1.2.209":"2026-09-08T08:23:50.885Z","1.2.210":"2026-09-08T11:50:17.550Z","1.2.211":"2026-09-08T17:01:11.887Z","1.2.212":"2026-09-08T19:08:33.029Z","1.2.213":"2026-09-08T20:58:08.891Z","1.2.214":"2026-09-09T05:20:39.946Z","1.2.215":"2026-09-09T11:36:31.848Z","1.2.217":"2026-09-09T18:22:32.036Z","1.2.218":"2026-09-10T14:54:21.061Z","1.2.219":"2026-09-11T03:10:08.835Z","1.2.220":"2026-09-11T11:46:58.968Z","1.2.221":"2026-09-11T16:40:01.617Z","1.2.222":"2026-09-11T19:08:57.183Z","1.2.223":"2026-09-11T21:54:10.272Z","1.2.224":"2026-09-12T07:20:38.818Z","1.2.225":"2026-09-12T14:28:52.212Z","1.2.226":"2026-09-12T16:46:44.701Z","1.2.227":"2026-09-12T21:15:22.637Z","1.2.228":"2026-09-13T16:20:42.931Z","1.2.229":"2026-09-13T21:17:18.579Z","1.2.231":"2026-09-14T06:47:55.468Z","1.2.232":"2026-09-14T07:34:20.466Z","1.2.233":"2026-09-14T08:51:38.668Z","1.2.234":"2026-09-14T09:16:59.853Z","1.2.235":"2026-09-14T10:06:31.902Z","1.2.236":"2026-09-14T10:59:07.654Z","1.2.237":"2026-09-14T12:29:41.522Z","1.2.238":"2026-09-14T12:59:03.265Z","1.2.239":"2026-09-14T13:53:59.678Z","1.2.240":"2026-09-14T17:34:48.343Z","1.2.241":"2026-09-14T18:06:08.843Z","1.2.242":"2026-09-14T20:32:02.814Z","1.2.243":"2026-09-14T20:52:59.525Z","1.2.244":"2026-09-15T09:10:49.794Z","1.2.245":"2026-09-15T11:45:43.968Z","1.2.246":"2026-09-15T17:08:27.938Z","1.2.247":"2026-09-16T07:55:03.110Z","1.2.248":"2026-09-16T13:32:40.053Z","1.2.249":"2026-09-16T15:47:13.825Z","1.2.250":"2026-09-16T17:19:07.369Z","1.2.251":"2026-09-17T07:51:33.243Z","1.2.252":"2026-09-17T08:30:49.175Z","1.2.253":"2026-09-17T09:59:26.757Z","1.2.254":"2026-09-17T10:40:58.130Z","1.2.255":"2026-09-17T12:58:09.000Z","1.2.256":"2026-09-17T15:12:40.642Z","1.2.257":"2026-09-17T16:42:27.985Z","1.2.258":"2026-09-17T17:36:26.734Z","1.2.259":"2026-09-17T18:18:17.661Z","1.2.260":"2026-09-17T19:37:00.546Z","1.2.261":"2026-09-17T20:31:10.049Z","1.2.262":"2026-09-18T05:56:20.444Z","1.2.264":"2026-09-18T07:53:29.541Z","1.2.263":"2026-09-18T08:13:20.428Z","1.2.265":"2026-09-18T08:49:26.316Z","1.2.266":"2026-09-18T09:56:52.395Z","1.2.267":"2026-09-18T19:34:37.102Z","1.2.268":"2026-09-18T20:15:07.091Z","1.2.269":"2026-09-18T22:09:16.419Z","1.2.270":"2026-09-19T00:10:28.889Z","1.2.271":"2026-09-19T19:46:41.728Z","1.2.272":"2026-09-20T09:12:11.181Z","1.2.273":"2026-09-20T14:16:25.164Z","1.2.274":"2026-09-20T19:29:46.671Z","1.2.275":"2026-09-21T05:08:20.589Z","1.2.276":"2026-09-21T07:00:50.764Z","1.2.279":"2026-09-21T09:32:19.882Z","1.2.282":"2026-09-21T21:19:15.392Z","1.2.283":"2026-09-22T02:00:48.489Z","1.2.284":"2026-09-22T11:25:58.288Z","1.2.285":"2026-09-22T15:39:02.391Z","1.2.286":"2026-09-22T15:49:10.716Z","1.2.287":"2026-09-22T22:27:32.869Z","1.2.288":"2026-09-23T11:07:22.368Z","1.2.290":"2026-09-24T14:21:40.136Z","1.2.291":"2026-09-25T18:58:30.049Z","1.2.292":"2026-09-25T19:24:06.038Z"},"bugs":{"url":"https://github.com/camstack/server/issues"},"license":"MIT","homepage":"https://github.com/camstack/server#readme","keywords":["camstack","addon","camstack-addon","pipeline","detection","motion","audio","stream-broker"],"repository":{"url":"git+https://github.com/camstack/server.git","type":"git"},"description":"Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.","maintainers":[{"name":"apocaliss92","email":"giangy.ruocco.92@gmail.com"}],"readme":"ERROR: No README data found!","readmeFilename":""}