{"_id":"pilotswarm-web","_rev":"27-29751cb0cb4293c5ecb6275cb5d484ea","name":"pilotswarm-web","dist-tags":{"latest":"0.3.3"},"versions":{"0.1.0":{"name":"pilotswarm-web","version":"0.1.0","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.0","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"8dd9df45111a29c651751bc3757d96dd10b95a11","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.0.tgz","fileCount":57,"integrity":"sha512-CCe89LTPd83W9m+4bD08q69lq5XtjfbbNmNGR8BLqSD22veJkAQxYpWV2Pbn0sIdaRFBTdqZyZ7Oxl3rKJU22g==","signatures":[{"sig":"MEQCICjVwIJCsAorXPdlNBiahENwyqwpjTsB7B/0VmTUfc7TAiBLdgraBhzIfqndqLnMSYIzsWAWJCnHU4BGldA7OQQfDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1388589},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"a8e43ceb2afdbbf2f7787d6877772ec017b72ce2","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.15","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.0_1775808851139_0.015677770181999673","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"pilotswarm-web","version":"0.1.16","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.16","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"1827714b5ec04e4876e7b1ac0676237be5bf49fa","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.16.tgz","fileCount":58,"integrity":"sha512-YcuRapnhJaayGvFs9GO8miu/r7d10Lt/ohkoSwfc47+/L4NeR8bpYLUrWnfMdvbw1mhlbB+Byvh9wgOyRI1NRg==","signatures":[{"sig":"MEQCIDQuk8DbNc3ZT+OfFZ5Q+jFXTu0GzfPBiqy2TwZsV1DVAiBqo1/H49o7GgOQ8UylupKt72Bhy2C9cG3COIzPJQWttA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1415384},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"5bd7896abc9f1d9c443afdb3cf20cc81e2d6f8fc","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.16","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.16_1776019456562_0.00306792489554808","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"pilotswarm-web","version":"0.1.17","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.17","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"42c27d016bdeb9b8f1a8745e77af45e0c0e609a9","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.17.tgz","fileCount":58,"integrity":"sha512-upFvMh/eiT47vg8QJFJaARTm0dbPbwIZDcVME4b/NrNqj7/Au87Iqj0fQuAQoOeyuwa2BBnvY9ZgF8mbI8r1dg==","signatures":[{"sig":"MEQCIH7sKA3m135QTyNW1VbhwAH1cFhclBkPtYqLYg8NgWipAiAIc5H84mthUIYxuXJhRqnmmluLGWEA1BSy1yXScwptGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1418012},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"5d4ad0068f99386ea0e3aa4186ec25d17b88e4f9","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.17","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.17_1776025214020_0.6340752284287188","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"pilotswarm-web","version":"0.1.18","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.18","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"79c63f453352626a91774759359eba38b449ecc9","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.18.tgz","fileCount":58,"integrity":"sha512-ugBBi544Rng4hPKV7ioe1qV3pvfq7UBah78GeaYyiwLOv3V4ilG6cwDiGINICna3DSI48FrCbfLoDFIK/Ypdhg==","signatures":[{"sig":"MEQCICLSva5kz9Abn3z60aYmhiJOMIqAHz5Mo3XpMlFnhzu8AiAL2/pypLohNE4x1055GENBBB3fqbr0eFT/ZX+sPjbWew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1437830},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"0c5952849475c8dfc5eafdb6c2ea76c743c27f7f","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.18","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.18_1776198121882_0.046318113139568906","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"pilotswarm-web","version":"0.1.19","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.19","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"86cfaa45f11e30aad96d962d218d053e902cfdbe","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.19.tgz","fileCount":58,"integrity":"sha512-NxDxUz6UHj6FQwvVMAhn7jak43kG/jRXqNToCKYvVVQtNFk9rCWOnJkebs/J0kOqwyg/k6v23jYsdaalKw95IA==","signatures":[{"sig":"MEQCIES5gMOPMpb9lTggoFgTKc/cIAWcvjurOgfoaIk3I574AiA1KPEaI2SgttjPWK5n9r+CUPWr6jPvV0flszE+APC0Vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1469178},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"ae0c6952e31b1afe0ea7f18a4515a90aef39c1f3","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.19","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.19_1776353640998_0.5695001847808656","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"pilotswarm-web","version":"0.1.20","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.20","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"7d81146d6eec44019a097efc2aaf86c1469e150f","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.20.tgz","fileCount":58,"integrity":"sha512-TxmKdGYGuQ4ReQ77rs2R1060ESvpPtUvgbCYUj5EL6CeNb00cXu+TMmOohHPMJSEOkPckBGySTS9Y/ujwqI1qA==","signatures":[{"sig":"MEUCIDxKy+hRv/AAAN2nEYwLnasss+yaVwOpNqLn9SnxEcCgAiEAuWTElMUw1hmjq5eXlMTewRDVKjYLLicGx4GFgwsQvpc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1493265},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"536fa057a5d7efd86d753e96200461b3c6cd3f13","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.20","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.20_1776529745637_0.8515880946704901","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"pilotswarm-web","version":"0.1.21","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.21","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"1197c97037ec3168f16ce445d6fb156c15e47e1a","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.21.tgz","fileCount":59,"integrity":"sha512-a70LLP6nUnAVF9bJ4UvNaub7ntGh47Jbemacs/ajVeCYjlPOteqrvu6cZMLkyCy+jtix8Ab11Vl0ByrVVc3YRw==","signatures":[{"sig":"MEUCIQCrKml2/W9s+wGcElD6qEzctMXia2A6ReO40kKs8vueRAIgTdtp6yxYcrhb1E1FsWCAIQ5WFcFcReJs5OgceakPT10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1610394},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"ebdfbbd345f653eb4d55c0c61536d22265aac6e5","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.21","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.21_1776874882314_0.14653840743785507","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"pilotswarm-web","version":"0.1.22","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.22","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"1b6abb59ea8200ce763973d42d41c9f5ee6110b8","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.22.tgz","fileCount":59,"integrity":"sha512-c0d3WYSxZhD0aFfmy/lunoB/V/jbV/7esdheF/35WjsIEXVHEYb0Y8TBgl1fyBkqY7QKAXv9XLBDVpd/Zyk5yQ==","signatures":[{"sig":"MEUCIAOWAj4An/GDsHUBV9L1cUWzg3Ra3JM0WWjgi7F4KiEZAiEAoLaqyE1GmQhBWFgakNKs3K7CdCLEHvF266a7CJJAGx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1627106},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"f4a538309094eebf0402bc9ab162309b88631899","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.22","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.22_1776975795971_0.31398813235665135","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"pilotswarm-web","version":"0.1.23","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.23","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"029025769d9459a5b63ece3d9c04528ac81e37fa","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.23.tgz","fileCount":59,"integrity":"sha512-g91bkvGMclSkXdsg824zlKXMBE1A7RJbEeyvWPtzJq746jrBCBLvugMmVRHiyNyeYdlZYPlew+plWkgh53n3og==","signatures":[{"sig":"MEQCIHMt4uCDTsA61uzoK39NVqU666UibxZYluvbHpTm7MszAiANbdz6SklOGybJ4h2eBwbHe8dLkHe2aIgyPG5FGnJgBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1701393},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"46e48092aad89a95daf15db289cc838ed304f666","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.23","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.23_1777355114461_0.48002217240605694","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"pilotswarm-web","version":"0.1.24","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.24","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"aaca640c6069586691090a8453a8da639ee22c9b","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.24.tgz","fileCount":60,"integrity":"sha512-yK8UhL02wKwv4p0Kjm1XJyJ1z0YLKwM/LXJshLDJXvVgpXzP49gGnhW219JRhZgYXXUAnL/fdiC1Gb3Rr9lG8Q==","signatures":[{"sig":"MEUCIQDtRCuE/G/ywN22GKdKN3yAkKY/dGJzPcdSLxlxLVIB+wIgUd1+q6AQKv6q425Sll7UqLK43LJ7J/ydccMpPyzT3hQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1829453},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"00f3b1f1d5b06a7a22a3c39a53b9c04e1dd51584","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.24","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.24_1777831044537_0.8341000051462588","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"pilotswarm-web","version":"0.1.25","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.25","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"246bf52ae1f909f638e93efd0e5a5e420ade4cb5","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.25.tgz","fileCount":60,"integrity":"sha512-VfJZUQvdOiz2QF35LKZhTNgOYVo8G3uVAD9W2orMb65RGTyBjk9ldD0oZaX1Vf5Qf3+CUW6Ake8gBKNw8E0xHQ==","signatures":[{"sig":"MEYCIQCUi4pzvcZTqUi2XrzBRJxstr+7I4w+RvgQ06C/fVNlgAIhAO6u13QYfdCJkMG0Ouvp03EMbWRZcMS5ojSZMCOlp+YK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1829453},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"e1ed8a3c138e6b658cc30a679165eca76ee72ddb","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.25","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.25_1777842211909_0.8988178591919287","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"pilotswarm-web","version":"0.1.26","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.26","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"dd98c3aa1d455f403e10b1f3a233ee8e27e2d641","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.26.tgz","fileCount":60,"integrity":"sha512-7Bi+D2cg0+Yat9mjRahHC3qsYfCeH3UWP9+gqLiWw+av6+T+u2ND+rh8zuTJggo7SHeNnGWuTXZBHc5+M/uxZw==","signatures":[{"sig":"MEYCIQCYR8lt9fTX/TBe3lb/cYgcw6NCVMYigbgxqx/MmuSkbgIhAJaBQg28ctHOf/VBkFYN0wc5EbsNmXi0KsKVokEficRp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1829424},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"319308e33b3acc380cb7e438b0d4a6fe819f2bfe","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.26","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.26_1777850045829_0.5589400571278684","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"pilotswarm-web","version":"0.1.27","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.27","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"507b2e31fcde4548294cd88a68cdf7dbdd262d1f","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.27.tgz","fileCount":60,"integrity":"sha512-WM9PdpcsL8m9NU1bppITaissXN0H1mQU51cko4C9mn1ymxqV34UUAgCjrUVtRN1x8yIHr14hwqBf9VObdjM+Kw==","signatures":[{"sig":"MEUCIQCWDmtW41zvoCVROWucemjRBsCTEhYI1ibQhyCGZSNt3AIgSr1WLt8yyvr7NmXNaEITkaOls1cz75oSB1DtbrtS2Kw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1830952},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"1398a8dc7317da9734fc0e8544e73876ba187eba","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.27","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.27_1778105795687_0.4141108221224663","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"pilotswarm-web","version":"0.1.28","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.28","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"9efce4e161f781c2445e8abf1b3d0747bf34774b","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.28.tgz","fileCount":60,"integrity":"sha512-N7IwN4HxxwAbe18lU/iZRKxWtzmJICk2yA1j7R1ffJpGdMp7LRg7WSEjfocvHigzZRJVKe4tmNaMsqQVdXDWGw==","signatures":[{"sig":"MEYCIQCzVR2CXGjp7tW7+DZByBHIJJk8dm2Lbh09g+1qVmQoJAIhAPe6soLHdX68amDpKu7PsEHvYQdZosReAnqr5msi4j3A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1834745},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"a1510e13112083e6f4e7bc123410023b6faf0b73","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.28","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.28_1778340604277_0.8610521710762398","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"pilotswarm-web","version":"0.1.29","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.29","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"cc6a26a027e18ca939489807339987a983a51d94","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.29.tgz","fileCount":60,"integrity":"sha512-UAuvrOrJC04tVoaTXlBEthnahXobDOZTZM7o9UpCeXIDyj49X5DynBta1yGE9NnbQ5uxYnldaZUiOMVjA9hZ2w==","signatures":[{"sig":"MEYCIQDmfVHflQvjsYNG1UfSZ6M3crzVA0Yqy2Xf+4lJ0xt1ygIhAPv9eSiDBHasMtl6Kqt+YBlfbiIeEE/1A5jLlXe3jFR9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1834782},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"6ea4e76662d4fba8ee54b9a5f6fcde53938b98a4","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"grimfanda","email":"affandar@hotmail.com"},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.11.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.29","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.29_1778711862986_0.1922047371064899","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"pilotswarm-web","version":"0.1.30","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.30","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"510f8ec4d7f13b076260192db974f40301b2da53","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.30.tgz","fileCount":61,"integrity":"sha512-pqX1ruX0x2H7HbrvpXZ8gWKo/VsbXJhh6uq2WijD8X4AcYNxfIqciFOiZawu8ym2M+yIfkNw4ax1eDUWgyn8rw==","signatures":[{"sig":"MEYCIQCJb5otYZHqZBOFMwVWHxZFkCSogkUYtBugLoGbGD2ydQIhAObPbyF8nuxCbW787s11+dIs3xWdkRvLypA24xCF6EKS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.30","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1962889},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"fdfdb29bc03191578b6d16cca8f7645dc32aa81f","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.12.1","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.30","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.30_1779291068919_0.7611199077924768","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"pilotswarm-web","version":"0.1.31","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.31","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"89591c5a142548c19732528d3b4410d44c1484b8","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.31.tgz","fileCount":61,"integrity":"sha512-FuJX6AXLg5Xj5uJsf3YGjhzxLXcA3KNYngO3y0tlcschWFhIUwxAZkIOiCqcN8oZr3rThCuPrIVVNU593bceoA==","signatures":[{"sig":"MEUCIHXtDUC2rhJrvyH7mso5rPILLNorf/wccvppiqDYRuXtAiEAm3VsxgypsxrZqw3FEIhmY9BQsHPrfkGH/TFbIYbVItg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.31","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1962889},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"4686f5910c6a2981264a6e91d3320959caa4fbd4","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.12.1","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.31","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.31_1779306507292_0.8836142035656556","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"pilotswarm-web","version":"0.1.32","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.32","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"b1368a0c8c41d3665881164214538b1f7f25c4c9","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.32.tgz","fileCount":61,"integrity":"sha512-ZZS4QucoiMh9A2AhT7t923TcyC8jxeAOlimRa8mLn17njjWI8fdsbN9zOcNaUjrcrU9v73h9LwbSuRHau4G6vg==","signatures":[{"sig":"MEUCIHwGnzP8BazY0eBGOaAObNMy0HESs3kRCClKyuSoHtHQAiEA1S5ZdeIK+oJQ2U8fSvFaRtbGKm/XlfN6D745ePTqI5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.32","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1966000},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"85c1324402829eba28f525513db4ec427f117404","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.12.1","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.32","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.32_1779485273505_0.4998078304326654","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"pilotswarm-web","version":"0.1.33","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.33","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"fff124e8fb3697697b61bf0438676b8269b7b652","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.33.tgz","fileCount":61,"integrity":"sha512-WVxacoVOmWcMkYveAw0UkU1yEpMoJS6RrEq1T5i/NT4yezkVN91w33aVYYH5rZIThQluqW99Pgq5PScdwrEzWw==","signatures":[{"sig":"MEUCIFtFadGutfFASukrC/tiw+ScfrfSlFaPXijHh2/rnwyGAiEA1YOdEBcIaxHYGvHOC/QWQ5Wz3ui/5vVNlostGOhXGus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.33","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1969243},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"fc7961e5099b4f77e1937acfa2fbbbb5dcc00f6b","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.12.1","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.33","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.33_1779810161573_0.006224909077995111","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"pilotswarm-web","version":"0.1.34","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.34","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"6b303fde17a53357a2758a4d31290bcf236227fe","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.34.tgz","fileCount":61,"integrity":"sha512-yA6VGk1AXnLHZEGIkgsGbLSEv4wZBrEVAPG087iXvM3CkHMsXUdaIqvReGwYmFnK0L84YPT6DmZYbjxGYGsx5A==","signatures":[{"sig":"MEUCIH7VIr35O/Pd/isod+FJNII8WFZ1cX5uCPYnBFIaJgbfAiEA4wqMCirn3Q8ZTfZhCpxHlOpyChSb1fSr1/HpPFL6E/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.34","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1970721},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"7265865cb54adb5915108a1bdfaf784d39e5f61b","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.34","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.34_1780097349763_0.9269351342211696","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"name":"pilotswarm-web","version":"0.1.35","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.1.35","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"fd6f91d63b0da0362b463273913183cc6e538977","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.1.35.tgz","fileCount":61,"integrity":"sha512-oUJl0njVbfHY2FMnhjepi6F5MhII64z8g782MudP767O0PRuY4uOkocVXoJ9eWuQ8WwoJkBok68gjprUoMBXrA==","signatures":[{"sig":"MEUCIA9+uNSBbSZnXQT2u8DzR/8o9MuCy21tv/PhKZOyq2R8AiEAw9K1drmkHD4Gk7ChDrXCS0yNr/emkF62q3R8bx9XHNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.1.35","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1970721},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"77c4cbd2f6aab44a705117560df930734f510283","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.1.35","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.1.35_1780115598468_0.523933297805866","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"pilotswarm-web","version":"0.2.0","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.2.0","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"3660e6d7e1c979a98bf5d7d088874c5bf9d49252","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.2.0.tgz","fileCount":61,"integrity":"sha512-AVSOws0he+RXoPHNIgSlcqO21EdQ0k5HRDGFIz0/Gf5G3eYanTDKRQmirXGLivyzVSS7ojS4FcykAI/e3dk6+A==","signatures":[{"sig":"MEQCICDV5nruLPyEvIfEIFCRmVNMET77rIVRjnjc8R6R9BCfAiB0J/nrnkGzBhk2IuHyJ6JQf7sHy5LUmcZvDK5zclqdjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1970718},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"90affeadbf4101faeeb6389754d373a1a1d0f910","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.2.0","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.2.0_1781849354536_0.6028066913725794","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"pilotswarm-web","version":"0.2.2","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.2.2","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"059044b15c27a3b5f989650d23c161fca39b61d1","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.2.2.tgz","fileCount":61,"integrity":"sha512-CEYmOafeHhn+AlIdvASYWz5XNP/bgaO8qwRKubaVpitWyqEUjR3+vwz0ZahFdFxHrzDhtZWHbt2nNPy26llFWw==","signatures":[{"sig":"MEYCIQDI9pMwG71x/OY1BGpmf8DhcgociPpqBtJTy+AgtrGWsgIhAIB2dlVul1KdcRwtxTHt7oMpZSnPuv2tNN0OovrWcXBt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1977316},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"af2473263b988c2fc56307262426b871379ace0d","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.2.2","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.2.2_1782265713465_0.052433022178806965","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"pilotswarm-web","version":"0.3.0","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.3.0","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"846d4fa478ac095cf800901795679d53f38670c7","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.3.0.tgz","fileCount":61,"integrity":"sha512-PY/dNAuho00wPJXJNuIfbNk92dsegkgTnUaeTXHBn9DDfNXkIaMIvPZVPC4NSbKkuRlbTtjjtE5in75i85P8mw==","signatures":[{"sig":"MEUCIFcBw/RqAU9txb/NjqGsjnIwKfQqjV9oPO6RkDT/oJ52AiEA6r0zNekY2f9VDTaHeI/tl692cmQoJr47YeXAA09mK7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1978266},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"10ff7f352430b00d242bce8daa8fbfebd399901b","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.3.0","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.3.0_1782523639593_0.9305933927197241","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"pilotswarm-web","version":"0.3.1","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.3.1","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"ca5d392e4e5628a0d830ea046b683d26a3937dd7","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.3.1.tgz","fileCount":61,"integrity":"sha512-92a6IhpuC1kUSSYhqH3RFy88l0SUS6c10BFTwsNQT7wflukDUju0HKzcmX0AEUoqhcxPJ72iHMDPE9trrvbmiA==","signatures":[{"sig":"MEQCIDyD3kuMcU7R0/Dq7djDGyHbFtIUCzbBrLyrqUg6B1dTAiBWn0azSKHpYtOjElpWNlW9LJJD2bIzqAhAMa/OkNwovw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1978266},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"33d25a07e37b4ed271298317eb037e5aa8a98772","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.3.1","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.3.1_1782669771282_0.030709118603928776","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"pilotswarm-web","version":"0.3.2","author":{"name":"Affan Dar"},"license":"MIT","_id":"pilotswarm-web@0.3.2","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"bin":{"pilotswarm-web":"bin/serve.js"},"dist":{"shasum":"dfd7335eeca696952e4005dbbb70ded7996af1d5","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.3.2.tgz","fileCount":61,"integrity":"sha512-pEah/1t+hFyqBnnidV6k0b+xNkyU52tz3IQHjrC3eWjg5CrFpomfs/35S+LPdhhQ1zrdBJcJWuMczb8XF1FZTA==","signatures":[{"sig":"MEUCIG6RHpRRK7I2BRaAYdcBMBITwBSul06PgLpBbd3aPEWlAiEAmrmvPId0/ZVUOcQb/FpZtmtTD/lbkl9gvwUFN1mYZJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1984999},"main":"./server.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":"./server.js"},"gitHead":"c1d8140c3d3af4c6e7ffd9777ad51cb9f2455e2b","private":false,"scripts":{"dev":"vite --host 0.0.0.0","build":"vite build","clean":"rm -rf dist","start":"node server.js","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","dev:server":"node server.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"repository":{"url":"git+https://github.com/affandar/PilotSwarm.git","type":"git"},"_npmVersion":"11.16.0","description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.2","jose":"^6.2.2","react":"^19.2.4","express":"^5.1.0","react-dom":"^19.2.4","pilotswarm-cli":"^0.3.2","pilotswarm-ui-core":"0.1.0","@azure/msal-browser":"^4.26.1","pilotswarm-ui-react":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.0","@vitejs/plugin-react":"^5.1.0"},"bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_npmOperationalInternal":{"tmp":"tmp/pilotswarm-web_0.3.2_1782916783293_0.38379067333918515","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"pilotswarm-web","version":"0.3.3","private":false,"description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","type":"module","bin":{"pilotswarm-web":"bin/serve.js"},"main":"./server.js","exports":{".":"./server.js"},"scripts":{"build":"vite build","prepack":"npm run build && node -e \"const fs=require('fs');const cp=(s,d)=>{fs.mkdirSync(d,{recursive:true});for(const e of fs.readdirSync(s,{withFileTypes:true})){const sp=s+'/'+e.name,dp=d+'/'+e.name;e.isDirectory()?cp(sp,dp):fs.copyFileSync(sp,dp)}};for(const p of ['pilotswarm-ui-core','pilotswarm-ui-react']){const src='../'+p.replace('pilotswarm-','');const dst='node_modules/'+p;fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(src+'/package.json',dst+'/package.json');fs.copyFileSync(src+'/README.md',dst+'/README.md');cp(src+'/src',dst+'/src')}\"","start":"node server.js","dev":"vite --host 0.0.0.0","dev:server":"node server.js","clean":"rm -rf dist"},"dependencies":{"@azure/msal-browser":"^4.26.1","express":"^5.1.0","jose":"^6.2.2","pilotswarm-cli":"^0.3.3","pilotswarm-ui-core":"0.1.0","pilotswarm-ui-react":"0.1.0","react":"^19.2.4","react-dom":"^19.2.4","ws":"^8.18.2"},"devDependencies":{"@vitejs/plugin-react":"^5.1.0","vite":"^7.2.0"},"author":{"name":"Affan Dar"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/affandar/PilotSwarm.git"},"homepage":"https://github.com/affandar/PilotSwarm","bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"engines":{"node":">=24.0.0"},"gitHead":"1902a74392d070746957adaf7b45af0319aa8b67","_id":"pilotswarm-web@0.3.3","bundleDependencies":["pilotswarm-ui-core","pilotswarm-ui-react"],"_nodeVersion":"24.17.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-/wP1YuxdHbGX4cEnxRSfNI3vNNkpZFEsDxH3WwyPkO1n1Yu7WlqnGCsyliIDlDMKS7AOn+3Fl4LuoYyflz4ljg==","shasum":"e3c5729503d316e39ea323dec2bbcf89df5c1536","tarball":"https://registry.npmjs.org/pilotswarm-web/-/pilotswarm-web-0.3.3.tgz","fileCount":67,"unpackedSize":2024387,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pilotswarm-web@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC5fdl35U6lQv0Jwab89ILKnmv62R+H+pcuS1cfww0JeQIhAIufyaLen66FbOt3NmwF3JDmwfTvuBz53pQl6vi3gyfn"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:09807f26-e577-4186-9065-95475b5ad0f6"}},"directories":{},"maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pilotswarm-web_0.3.3_1782954294828_0.9529096062981932"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-10T08:14:11.063Z","modified":"2026-07-02T01:04:55.288Z","0.1.0":"2026-04-10T08:14:11.283Z","0.1.16":"2026-04-12T18:44:16.780Z","0.1.17":"2026-04-12T20:20:14.180Z","0.1.18":"2026-04-14T20:22:02.029Z","0.1.19":"2026-04-16T15:34:01.175Z","0.1.20":"2026-04-18T16:29:05.819Z","0.1.21":"2026-04-22T16:21:22.550Z","0.1.22":"2026-04-23T20:23:16.219Z","0.1.23":"2026-04-28T05:45:14.624Z","0.1.24":"2026-05-03T17:57:24.747Z","0.1.25":"2026-05-03T21:03:32.090Z","0.1.26":"2026-05-03T23:14:06.105Z","0.1.27":"2026-05-06T22:16:35.876Z","0.1.28":"2026-05-09T15:30:04.460Z","0.1.29":"2026-05-13T22:37:43.181Z","0.1.30":"2026-05-20T15:31:09.163Z","0.1.31":"2026-05-20T19:48:27.531Z","0.1.32":"2026-05-22T21:27:53.699Z","0.1.33":"2026-05-26T15:42:41.729Z","0.1.34":"2026-05-29T23:29:09.957Z","0.1.35":"2026-05-30T04:33:18.638Z","0.2.0":"2026-06-19T06:09:14.737Z","0.2.2":"2026-06-24T01:48:33.631Z","0.3.0":"2026-06-27T01:27:19.737Z","0.3.1":"2026-06-28T18:02:51.552Z","0.3.2":"2026-07-01T14:39:43.530Z","0.3.3":"2026-07-02T01:04:55.007Z"},"bugs":{"url":"https://github.com/affandar/PilotSwarm/issues"},"author":{"name":"Affan Dar"},"license":"MIT","homepage":"https://github.com/affandar/PilotSwarm","repository":{"type":"git","url":"git+https://github.com/affandar/PilotSwarm.git"},"description":"Browser-native web portal for PilotSwarm with shared controller/state/theme reuse.","maintainers":[{"name":"grimfanda","email":"affandar@hotmail.com"}],"readme":"# pilotswarm-web\n\nWeb portal for PilotSwarm — browser-based durable agent orchestration UI.\n\nFull feature parity with the TUI: session management, real-time chat, agent\nsplash screens (ASCII art), sequence diagrams, node maps, worker logs,\nbinary-safe artifact downloads, metadata-aware browser previews, and keyboard shortcuts.\n\n## Quick Start\n\n```bash\n# Install\nnpm install pilotswarm-web\n\n# Run (starts server + serves React app)\nnpx pilotswarm-web --env .env.remote\nnpx pilotswarm-web --env .env.remote --plugin ./plugin\n\n# Development (Vite HMR)\ncd packages/portal\nnpm run dev              # React app at http://localhost:5173\nnode server.js           # API server at http://localhost:3001\n```\n\n## Portal Customization\n\nThe web portal reads app-facing customization from `plugin.json` in your app\nplugin directory. Pass the plugin path with `--plugin` or set `PLUGIN_DIRS`\nso the portal process can see the same metadata the TUI and worker use.\n\nSupported keys:\n\n```json\n{\n  \"tui\": {\n    \"title\": \"DevOps Command Center\",\n    \"splashFile\": \"./tui-splash.txt\"\n  },\n  \"portal\": {\n    \"branding\": {\n      \"title\": \"DevOps Command Center\",\n      \"pageTitle\": \"DevOps Command Center Portal\",\n      \"splashFile\": \"./tui-splash.txt\",\n      \"logoFile\": \"./assets/logo.svg\",\n      \"faviconFile\": \"./assets/favicon.png\"\n    },\n    \"ui\": {\n      \"loadingMessage\": \"Preparing the DevOps workspace\",\n      \"loadingCopy\": \"Connecting dashboards, session feeds, and orchestration state...\"\n    },\n    \"auth\": {\n      \"provider\": \"entra\",\n      \"signInTitle\": \"Sign in to DevOps Command Center\",\n      \"signInMessage\": \"Use your organization's identity provider to open the shared operations workspace.\",\n      \"signInLabel\": \"Sign In\"\n    }\n  }\n}\n```\n\nNotes:\n\n- Preferred schema is nested: `portal.branding`, `portal.ui`, and `portal.auth`.\n- Flat legacy keys such as `portal.title` and `portal.loadingMessage` are still accepted for backwards compatibility.\n- `portal.auth.provider` selects the active auth provider when the deployment does not override it with `PORTAL_AUTH_PROVIDER`.\n- `branding.logoFile` is used on the loading splash, sign-in card, and signed-in header.\n- If `branding.faviconFile` is omitted, the browser tab icon reuses `branding.logoFile`.\n- Keep logo assets inside the plugin directory so the portal image can package and serve them alongside `plugin.json`.\n\nFallback order:\n\n- `portal.branding.*` / `portal.ui.*` / `portal.auth.*`\n- flat `portal.*`\n- `tui.title` / `tui.splash` / `tui.splashFile`\n- built-in `PilotSwarm` defaults\n\nNamed-agent creation in the portal comes from the same plugin metadata surface.\nIf the portal process cannot see your plugin directory, the web UI falls back\nto generic sessions even when the worker supports named agents.\n\nArtifact behavior:\n\n- text artifacts still preview inline in the browser workspace\n- binary artifacts render as a download-only card in the browser workspace\n- downloads preserve the stored content type and raw bytes\n\n## Auth Add-Ons\n\nPortal authentication is provider-based.\n\n- Default: `none`\n- Built-in optional provider: `entra`\n- AuthZ is common across providers and currently supports Phase 1 group-based admission control\n\nEnable Entra ID with env vars:\n\n```bash\nPORTAL_AUTH_PROVIDER=entra\nPORTAL_AUTH_ENTRA_TENANT_ID=<tenant-id>\nPORTAL_AUTH_ENTRA_CLIENT_ID=<client-id>\nPORTAL_AUTHZ_ADMIN_GROUPS=admin1@contoso.com,admin2@contoso.com\nPORTAL_AUTHZ_USER_GROUPS=user1@contoso.com,user2@contoso.com\n```\n\nNotes:\n\n- `PORTAL_AUTHZ_ADMIN_GROUPS` and `PORTAL_AUTHZ_USER_GROUPS` are currently comma-delimited email allowlists despite the historical variable names.\n- `PORTAL_AUTHZ_DEFAULT_ROLE` defaults to `none` (deny-by-default since v0.1.33). If no admin/user groups are configured and the JWT carries no role claim, a signed-in user is **denied** at the portal layer. Set `PORTAL_AUTHZ_DEFAULT_ROLE=user` to restore the legacy \"any tenant user gets `user`\" open posture (sandbox stamps only).\n- `admin` and `user` have the same portal permissions today; the allowlists act as an admission gate and role assignment surface.\n\n### App Roles (Recommended For IT-Managed Tenants)\n\nWhen the Entra app registration defines `admin` and `user` app roles\nand assigns them, the portal decides admission from the JWT `roles`\nclaim — the role assignment in Entra **is** the allowlist for this\nposture. The portal matches the claim by case-insensitive equality\nagainst the canonical values `admin` and `user`; there is no override\nenv var. With deny-by-default (the default since v0.1.33), unassigned\nsigned-in users are denied at the portal layer.\n\nThe email-allowlist path (`PORTAL_AUTHZ_ADMIN_GROUPS` /\n`PORTAL_AUTHZ_USER_GROUPS`) is bypassed entirely when the JWT carries\na `roles[]` claim — use it only for stamps that do not use\n`-CreateAppRoles`. Flipping `appRoleAssignmentRequired=true` on the\nEnterprise Application adds an Entra-side gate as well; it is optional\nand carries a restricted-tenant caveat (AADSTS90094 admin-consent\nprompts). See\n[`../../docs/portal-entra-app-roles.md`](../../docs/portal-entra-app-roles.md)\nfor the full operator runbook.\n\nThe portal core no longer assumes Entra specifically. New providers can plug\ninto the same browser/server provider interfaces, while sharing the same common\nauthz layer.\n\n## Architecture\n\n```\nBrowser (React + Vite)\n  │\n  ├── WebSocket ──► Portal Server (Express + ws)\n  │                    │\n  │                    ├── PilotSwarmClient\n  │                    ├── PilotSwarmManagementClient\n  │                    └── PilotSwarmWorker (embedded or remote)\n  │\n  └── REST (session list, models, artifacts)\n```\n\nSame public API boundary as the TUI — only `PilotSwarmClient`,\n`PilotSwarmManagementClient`, and `PilotSwarmWorker` APIs. No internal\nmodule imports.\n\n## Package Relationship\n\n```\npilotswarm-web         (this package)\n  ├── pilotswarm-cli   (shared node/runtime host glue)\n  │   ├── pilotswarm-sdk\n  │   ├── pilotswarm-ui-core\n  │   └── pilotswarm-ui-react\n  ├── express\n  ├── ws\n  ├── react, react-dom\n  └── vite             (devDependency)\n```\n\n`pilotswarm-web` now consumes a small supported portal-facing surface from\n`pilotswarm-cli` rather than importing monorepo-relative source files. That\nkeeps the publishable package graph explicit and lets the portal reuse the same\nNode transport and plugin-config behavior as the TUI.\n","readmeFilename":"README.md"}