{"_id":"bopodev-api","_rev":"36-47e4987f55374812d76bf4ab7cd08b7c","name":"bopodev-api","dist-tags":{"latest":"0.1.37"},"versions":{"0.1.1":{"name":"bopodev-api","version":"0.1.1","license":"MIT","_id":"bopodev-api@0.1.1","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"841e5ed6e8e10a0a03a3b3f4738f9442369c2211","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.1.tgz","fileCount":25,"integrity":"sha512-CfBKal+HC3UlAhmaEf1o48H6/daIrK8rWY8WRi1awV45Y+ob8qdQGJUiJc6sm/DuIEVa0mkBmfqD2InLK76Tsg==","signatures":[{"sig":"MEUCIQDEDyG6bKVO/DRK4u11gOiJFggXa5vQBKp2QL5fhH9JjAIgd3+I2ya2Ocu6b0ucAgGhhO/OQXZZkaYJPCoHeVnBWYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100896},"type":"module","_from":"file:bopodev-api-0.1.1.tgz","scripts":{"dev":"tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/94c5325b50f9e0e0b70eb917a2273ea3/bopodev-api-0.1.1.tgz","_integrity":"sha512-CfBKal+HC3UlAhmaEf1o48H6/daIrK8rWY8WRi1awV45Y+ob8qdQGJUiJc6sm/DuIEVa0mkBmfqD2InLK76Tsg==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.1","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.1","bopodev-contracts":"0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.1_1772999564097_0.5011710773872833","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"bopodev-api","version":"0.1.2","license":"MIT","_id":"bopodev-api@0.1.2","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"e27aeab42283404c363516f81564cf35de21a156","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.2.tgz","fileCount":25,"integrity":"sha512-QaMLRjbrCbfbS4Jnb9hjaYfMtOijigktnUwT7DHn4foDo4ZeMTb9OMOYMVIfDAX8v1CW1lhTE5onILSVVwBSTw==","signatures":[{"sig":"MEYCIQCerRgjYMr04+nY5QBkSQXASvbw8Hhe9gcmpperdJS1GgIhAIdmDffBx6L+9qxD7fIjTVhpYqmrzbut085lmOioXmFf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101010},"type":"module","_from":"file:bopodev-api-0.1.2.tgz","scripts":{"dev":"tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/de0bac7bbf98fb59da9de502ba89c5f1/bopodev-api-0.1.2.tgz","_integrity":"sha512-QaMLRjbrCbfbS4Jnb9hjaYfMtOijigktnUwT7DHn4foDo4ZeMTb9OMOYMVIfDAX8v1CW1lhTE5onILSVVwBSTw==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.2","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.2","bopodev-contracts":"0.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.2_1773000083772_0.3627251622228058","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"bopodev-api","version":"0.1.3","license":"MIT","_id":"bopodev-api@0.1.3","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"a338393f23b126600c81271d63b33e6694a57906","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.3.tgz","fileCount":25,"integrity":"sha512-tdKFp7irr47MNhXVY27Vn7DnFmqOgKV2hJdKHYzEP0/NXFmiceKGchiTjXBjmRXOwo1SKxh+CoWJP1yqMuH8RQ==","signatures":[{"sig":"MEQCIECDQTBk6KL39V9sxP59Bxn9Hs/YAWUuB2DMVAT4iUuyAiB/zlHCP77MG/mmFibUO+TE6J4lU6btFOIXUcULTBEGvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102445},"type":"module","_from":"file:bopodev-api-0.1.3.tgz","scripts":{"dev":"tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/c8574cffba5da8ed50c1e5d4ed6b6a30/bopodev-api-0.1.3.tgz","_integrity":"sha512-tdKFp7irr47MNhXVY27Vn7DnFmqOgKV2hJdKHYzEP0/NXFmiceKGchiTjXBjmRXOwo1SKxh+CoWJP1yqMuH8RQ==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.3","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.3","bopodev-contracts":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.3_1773001004533_0.39211565950147476","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"bopodev-api","version":"0.1.4","license":"MIT","_id":"bopodev-api@0.1.4","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"6c3e607d75bedde56ea42043c0a706b2ba271a21","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.4.tgz","fileCount":25,"integrity":"sha512-eU/DUaniT11OTi9DZUI9Fzp8YgCGq6BHlIKT/VUGEr3rbbcvSGkKa/IuK9WW90tEGcdZ5IgbMVBUfKlOjKdBqQ==","signatures":[{"sig":"MEQCIGvqkwspN7C/Ns/sN4vcaAuKt4gkChayYR9UnAhEjjawAiA3BHhQM0wd1OjnmrCFeyebZOidghvxjroayQ4RYkNhbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102491},"type":"module","_from":"file:bopodev-api-0.1.4.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/4f2a999734d7c46906b8f67bbfc0b75b/bopodev-api-0.1.4.tgz","_integrity":"sha512-eU/DUaniT11OTi9DZUI9Fzp8YgCGq6BHlIKT/VUGEr3rbbcvSGkKa/IuK9WW90tEGcdZ5IgbMVBUfKlOjKdBqQ==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.4","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.4","bopodev-contracts":"0.1.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.4_1773001588798_0.14277532695260775","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"bopodev-api","version":"0.1.5","license":"MIT","_id":"bopodev-api@0.1.5","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"07862f625e793a40e8ed1743ed712ebf1bff9143","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.5.tgz","fileCount":25,"integrity":"sha512-XnYjha5SoLw7hzJkwTC7zzdoesU9bmCgDzDF1Ts9ULJDpI90qivQMYcbjpQJsF/NrA3li7mj6mVvZzxs+ae2OA==","signatures":[{"sig":"MEQCIG6H7LWM1V7zunXjeeEFvAcp5GzCOahgEgQB3WlFBGGeAiA5kiU/gs+JCMcFzjcmCOYZwAdrpow/N3//7Xr8Eb+N4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102491},"type":"module","_from":"file:bopodev-api-0.1.5.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/9831b9a8c3ba7e88d44bf88c0fe7f773/bopodev-api-0.1.5.tgz","_integrity":"sha512-XnYjha5SoLw7hzJkwTC7zzdoesU9bmCgDzDF1Ts9ULJDpI90qivQMYcbjpQJsF/NrA3li7mj6mVvZzxs+ae2OA==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.5","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.5","bopodev-contracts":"0.1.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.5_1773002298487_0.8847778185200028","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"bopodev-api","version":"0.1.6","license":"MIT","_id":"bopodev-api@0.1.6","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"0fb2bb46d0170a8dc6b5c658f732d317de945bdd","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.6.tgz","fileCount":25,"integrity":"sha512-NwKMft7Tl0z5bni1Jsppt5vIlw840M1BRcoYfjIU8e0QHtoS7rRkNmGWQR9Q6kKuWM78wYz32QceKU6pJvo8Bg==","signatures":[{"sig":"MEUCIQDQssKcTAzZMUk3Ew33T4XtbEIgHutVBN6lfEMWYdt+AgIgajiMvQNeW4TLQCbIRPIQxmPTlSrBSOATEPVizlyXv4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102491},"type":"module","_from":"file:bopodev-api-0.1.6.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/9923ba9e23d18fc75066f40545d0b7b8/bopodev-api-0.1.6.tgz","_integrity":"sha512-NwKMft7Tl0z5bni1Jsppt5vIlw840M1BRcoYfjIU8e0QHtoS7rRkNmGWQR9Q6kKuWM78wYz32QceKU6pJvo8Bg==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.6","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.6","bopodev-contracts":"0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.6_1773002559198_0.8465422347258698","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"bopodev-api","version":"0.1.7","license":"MIT","_id":"bopodev-api@0.1.7","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"7fd4fb350410a2f0e8621d8707cf49e3cfd89a8e","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.7.tgz","fileCount":25,"integrity":"sha512-JKWAjlneXLVaFgdH4A73vyz6Ms2GaWJ9B4+gwMFyYflqUKioZw8AChEiJorXZut3W2Fbw+8fIyEn/Ww10HMrqQ==","signatures":[{"sig":"MEYCIQCXB1acqLmxuE9jU2H40RtWJP6A88jk2diPEzT8NXQhKAIhAJ6/4uiCwbWJIMBxPlE5CcwD00/+R55vvb0RjpXq/pWB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102491},"type":"module","_from":"file:bopodev-api-0.1.7.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/d4796bedd6ba80dd37b9d45b252f4e37/bopodev-api-0.1.7.tgz","_integrity":"sha512-JKWAjlneXLVaFgdH4A73vyz6Ms2GaWJ9B4+gwMFyYflqUKioZw8AChEiJorXZut3W2Fbw+8fIyEn/Ww10HMrqQ==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.7","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.7","bopodev-contracts":"0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.7_1773002990277_0.6819985203667305","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"bopodev-api","version":"0.1.8","license":"MIT","_id":"bopodev-api@0.1.8","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"3f901567f978d76b32fde336944bcd63def0acc3","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.8.tgz","fileCount":25,"integrity":"sha512-pA4N0q/WLHQZevMCtz1O49IDUqTWrKeBH0C9jjU2hu5WW4SmLk+ggsC0KZJC6xxhEylrYYJx/P7j+oxyxcKP8A==","signatures":[{"sig":"MEYCIQC+PKuy6ctLqKAeayUMskAadcwnkJNZwyhAd9S0TEaBDgIhAJVYftkjPzYVEdSL6ntzqs27H7Q3Wqvm7igrXIBqTOwj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104946},"type":"module","_from":"file:bopodev-api-0.1.8.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/16d9025ea2cd3661d916d8f6a3153cb9/bopodev-api-0.1.8.tgz","_integrity":"sha512-pA4N0q/WLHQZevMCtz1O49IDUqTWrKeBH0C9jjU2hu5WW4SmLk+ggsC0KZJC6xxhEylrYYJx/P7j+oxyxcKP8A==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.8","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.8","bopodev-contracts":"0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.8_1773004121058_0.033272771446457794","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"bopodev-api","version":"0.1.9","license":"MIT","_id":"bopodev-api@0.1.9","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"dfd7277436c1c6d22838a5dde5e3eaa503dddaf0","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.9.tgz","fileCount":30,"integrity":"sha512-W7N4Ug2WwyuLwOHNZwf92kXWaOUWoSEWGsMzyoQiFdDniSRmMcLrEUQ9MbUOLnrAT7FcDtfl0IDev1v04U897w==","signatures":[{"sig":"MEYCIQDtazg+u+I93QtFlMLO2MLZxnnD8IZzIj0kAv0GdeFFUQIhALnY46qixmkvfCBEDlwyP72NoN00uTHJxI5ZFtHzct5E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173389},"type":"module","_from":"file:bopodev-api-0.1.9.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/a66f09ea0a464171d32980e26ec23b96/bopodev-api-0.1.9.tgz","_integrity":"sha512-W7N4Ug2WwyuLwOHNZwf92kXWaOUWoSEWGsMzyoQiFdDniSRmMcLrEUQ9MbUOLnrAT7FcDtfl0IDev1v04U897w==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.9","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.9","bopodev-contracts":"0.1.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.9_1773099145017_0.9293259257769046","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"bopodev-api","version":"0.1.10","license":"MIT","_id":"bopodev-api@0.1.10","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"8b81941be030fbd04d5d4700fc9c4ca671202886","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.10.tgz","fileCount":30,"integrity":"sha512-xDJCk2GhT8h/QVeXI+E3w55nSz8JFckg7VQfhrWgV70ZhRhT3YHH0L3voZXh05BQn/8ARlQ1a5KMF2fX1L/1jQ==","signatures":[{"sig":"MEUCIQDPBpQeNKHViZrXyfzZbOoKLqTNXN6KqcRvNHktcv5hPwIgMBXcFOztk8hImwMcclbELIx/XBlTkgAdTptc32M4o5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173393},"type":"module","_from":"file:bopodev-api-0.1.10.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/7382ca2e8e2f685f384532924edbcc5c/bopodev-api-0.1.10.tgz","_integrity":"sha512-xDJCk2GhT8h/QVeXI+E3w55nSz8JFckg7VQfhrWgV70ZhRhT3YHH0L3voZXh05BQn/8ARlQ1a5KMF2fX1L/1jQ==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.10","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.10","bopodev-contracts":"0.1.10"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.10_1773099291596_0.9225830397187507","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"bopodev-api","version":"0.1.11","license":"MIT","_id":"bopodev-api@0.1.11","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"dbbc434e01016f2529bf115bd39591eb59f9e56d","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.11.tgz","fileCount":30,"integrity":"sha512-eAEgOY/PUpr6dcYYHMtWzryJ5o7Oo2azy7r/Csjy0FFs2sls5S61SVu9vCTFgvOS9PCFzN7l9WrlK5VO6fIh3A==","signatures":[{"sig":"MEUCIAHsGb84NH+Lb21fg50Shi59RLbwL1g/9kO12yATiBgWAiEAkIdtyntWhsdmh+4djDcJbHnsQM5hT8xjqTGHn3j8Ad8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195840},"type":"module","_from":"file:bopodev-api-0.1.11.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/e1b1c42994d458e333ccea590b62d778/bopodev-api-0.1.11.tgz","_integrity":"sha512-eAEgOY/PUpr6dcYYHMtWzryJ5o7Oo2azy7r/Csjy0FFs2sls5S61SVu9vCTFgvOS9PCFzN7l9WrlK5VO6fIh3A==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.11","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.11","bopodev-contracts":"0.1.11"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.11_1773152620239_0.7630702609199198","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"bopodev-api","version":"0.1.12","license":"MIT","_id":"bopodev-api@0.1.12","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"ea979735b4521c1e3f7289cd13cb9e4297419d6d","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.12.tgz","fileCount":30,"integrity":"sha512-mDQ1sksfXV+DUI5w2r10mVZ6aI/0NaLHzoSPmxvVXom1wBNfEcIURTyrSI8Ym9UkoHD9mySkoQrHlj4QmYfd9Q==","signatures":[{"sig":"MEQCIHpyKOGSvBLA9VDhELwYVSSdEFcRK4zrjoMD3Ev+1iLbAiBBuzqCoLWO/RtUYkWUxaKwhnXaEfyvR/kqiF6/zzRjEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195840},"type":"module","_from":"file:bopodev-api-0.1.12.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/7200b1a785e8398521db313f9a2f3c0d/bopodev-api-0.1.12.tgz","_integrity":"sha512-mDQ1sksfXV+DUI5w2r10mVZ6aI/0NaLHzoSPmxvVXom1wBNfEcIURTyrSI8Ym9UkoHD9mySkoQrHlj4QmYfd9Q==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.12","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.12","bopodev-contracts":"0.1.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.12_1773152746881_0.24023341975759638","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"bopodev-api","version":"0.1.13","license":"MIT","_id":"bopodev-api@0.1.13","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"44333097775e30ceaca087891b352d05db99daca","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.13.tgz","fileCount":37,"integrity":"sha512-7qnWt0hEDbJbbljZF/wkwDlIZlCtS4eNaiJGSmzoXytNsc2NR/hkfD5yNyGXeZgzba/wHK3Fb+vfbA+78qNq2A==","signatures":[{"sig":"MEYCIQCskipicBqO0r288FS6PnEH8ZP9wVmyedgEdPu90nXa2gIhAJUPdtKf3TQie76gRYXsMgfaFV6i7GrQ3MnSYFYaxCaM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297973},"type":"module","_from":"file:bopodev-api-0.1.13.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/23992e2a16331a541ee827fda038c792/bopodev-api-0.1.13.tgz","_integrity":"sha512-7qnWt0hEDbJbbljZF/wkwDlIZlCtS4eNaiJGSmzoXytNsc2NR/hkfD5yNyGXeZgzba/wHK3Fb+vfbA+78qNq2A==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.13","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.13","bopodev-contracts":"0.1.13"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.13_1773314269028_0.2275113612766395","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"bopodev-api","version":"0.1.14","license":"MIT","_id":"bopodev-api@0.1.14","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"0f25633c616454c960d272a76b5b20e38a150389","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.14.tgz","fileCount":38,"integrity":"sha512-NXEGzhikOz4DYBJ9prGJGmdbfHJ3KVtuLpcqLlFbSAawVNH/qB5C0kK7B8aqiGrb9phB5v7KXkV3HCc4E+8qTA==","signatures":[{"sig":"MEQCIFMsQ4JRCSoIebzpYu2lF983tRJuew/n8htPTnBnyHOsAiBDcu2SXeYaJMLm4FmL4EFMcVAaeBon15qtbPgstuwSOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317256},"type":"module","_from":"file:bopodev-api-0.1.14.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/cfbf707d63256eddbbf6cf106272a5f3/bopodev-api-0.1.14.tgz","_integrity":"sha512-NXEGzhikOz4DYBJ9prGJGmdbfHJ3KVtuLpcqLlFbSAawVNH/qB5C0kK7B8aqiGrb9phB5v7KXkV3HCc4E+8qTA==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.14","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.14","bopodev-contracts":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.14_1773336545529_0.567647439203399","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"bopodev-api","version":"0.1.15","license":"MIT","_id":"bopodev-api@0.1.15","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"2661d99a13c59b7ecd1ccb475eb1720934f52a55","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.15.tgz","fileCount":38,"integrity":"sha512-ujYxmb/VgrCjB51XX6xOuzL5JGesCdEOL1InKq6KWiQtDpzoXDayqcvTlQhS+shJG1kBFxm72UhPkNfBtNtCyw==","signatures":[{"sig":"MEUCIH71N4oqXkIwsoJDdczK/KEjw9COl78qyZ/1icG/9IEXAiEApF75Gh8RcS/ttf3Nit4qjVc8CWIg2Ll0ywpF87yGpK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318749},"type":"module","_from":"file:bopodev-api-0.1.15.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/9c7b504ef9f02414abe1b822a8175e2f/bopodev-api-0.1.15.tgz","_integrity":"sha512-ujYxmb/VgrCjB51XX6xOuzL5JGesCdEOL1InKq6KWiQtDpzoXDayqcvTlQhS+shJG1kBFxm72UhPkNfBtNtCyw==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.15","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.15","bopodev-contracts":"0.1.15"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.15_1773361848073_0.5048426426810002","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"bopodev-api","version":"0.1.16","license":"MIT","_id":"bopodev-api@0.1.16","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"8a8b2e10d6d35078361b18fe4c1a3f15060ddbe3","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.16.tgz","fileCount":46,"integrity":"sha512-+WB+ViaVqzW3vnSj1f0DvF6aQM/JHzb8TDsEuPm7Ql0cEBu84sbat3XqjAAVc4culZCy5zZtl1ihKNVo3ZeLCQ==","signatures":[{"sig":"MEUCIQCyJJHktyVi23yIPtlkPxZi7zKlGeEZFg75geUGAPh/xQIgbTXezADMCNcGa++2OhvYgT46Kc+AOQCz7GDW6pcnoaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415976},"type":"module","_from":"file:bopodev-api-0.1.16.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/d4ae0962e9d398bf581215bcc6638851/bopodev-api-0.1.16.tgz","_integrity":"sha512-+WB+ViaVqzW3vnSj1f0DvF6aQM/JHzb8TDsEuPm7Ql0cEBu84sbat3XqjAAVc4culZCy5zZtl1ihKNVo3ZeLCQ==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.16","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.16","bopodev-contracts":"0.1.16"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.16_1773416280858_0.738643086818769","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"bopodev-api","version":"0.1.17","license":"MIT","_id":"bopodev-api@0.1.17","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"4460e14f2ddf16ee2be1f2f325aaf8e8eb2b0cba","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.17.tgz","fileCount":46,"integrity":"sha512-cCbLEul1SMHjJk8tOVX/4hW16J9qn7Tp5Q1zKiLMC2JxXoFkHBZBOLadTLJmNT+2/oSLwLifF5H+vN5zna82KQ==","signatures":[{"sig":"MEQCIEGiFKoDR3LXzSC6eLyNsYJ6xO+tCwLN/zXW/SWtlJxwAiA8m1P8dG+wBiQJfLYjqBctXDj2dTJIgaefaYqh8LPUyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425733},"type":"module","_from":"file:bopodev-api-0.1.17.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/776df5a45d61cae538746b0b09d036e0/bopodev-api-0.1.17.tgz","_integrity":"sha512-cCbLEul1SMHjJk8tOVX/4hW16J9qn7Tp5Q1zKiLMC2JxXoFkHBZBOLadTLJmNT+2/oSLwLifF5H+vN5zna82KQ==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.17","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.17","bopodev-contracts":"0.1.17"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.17_1773444752176_0.9875796308838891","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"bopodev-api","version":"0.1.18","license":"MIT","_id":"bopodev-api@0.1.18","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"ad4079065086b90ca547764100ba0b7aa1024b32","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.18.tgz","fileCount":46,"integrity":"sha512-+QseIyrBjagTa0IAwwCfurRHKvU82c88VlsvOslmaJ64n5L7k5tcz4I9UEmWiA78Ic2kkNc/DLckHCO9TO2WWg==","signatures":[{"sig":"MEQCIH3vp+HHy6jxWO79D3ve9X5dZKB6l98z+qOc4oDCahbXAiA/W/CpgnphFAsm/G6aLO4Pmfts3yWk7UZWjVumYHSdaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425733},"type":"module","_from":"file:bopodev-api-0.1.18.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/c68af0dc4c246e577e8270f4953d13f1/bopodev-api-0.1.18.tgz","_integrity":"sha512-+QseIyrBjagTa0IAwwCfurRHKvU82c88VlsvOslmaJ64n5L7k5tcz4I9UEmWiA78Ic2kkNc/DLckHCO9TO2WWg==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.18","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.18","bopodev-contracts":"0.1.18"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.18_1773506595703_0.06404415520029327","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"bopodev-api","version":"0.1.19","license":"MIT","_id":"bopodev-api@0.1.19","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"42cdbfbd6947731b31233823ed1addca514a4217","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.19.tgz","fileCount":46,"integrity":"sha512-li7vgp+m6ElDXqAubUBoRcO18qexF1xYCWDKb8ufjX6cRGkhRIYPav1qBlSTP1A9pDB8uncP1Zb6SaSWumDPvA==","signatures":[{"sig":"MEYCIQDdfuPH4QaASqtvjmtl4k1bkAweuRBxzLrKACQAZ1lr0gIhAKjnjGcZjxmA7rz+uKgCMzv52nkokd/dnsEZKp7x1fN9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425733},"type":"module","_from":"file:bopodev-api-0.1.19.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/2bc2e99a3e254bea2dda207832b58409/bopodev-api-0.1.19.tgz","_integrity":"sha512-li7vgp+m6ElDXqAubUBoRcO18qexF1xYCWDKb8ufjX6cRGkhRIYPav1qBlSTP1A9pDB8uncP1Zb6SaSWumDPvA==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.19","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.19","bopodev-contracts":"0.1.19"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.19_1773749470426_0.051715991983090515","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"bopodev-api","version":"0.1.21","license":"MIT","_id":"bopodev-api@0.1.21","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"cc88d46a954ddc8d4545d90e92929c4786e6eb9f","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.21.tgz","fileCount":48,"integrity":"sha512-LI+FGiGZlZgwdYmHGiAmK7JaS2oizl4J9fpx0BqbUmXcnB7sLxhL8IEB6iybuYuSi46ho6Gty7x1CZE5qr6uLw==","signatures":[{"sig":"MEYCIQCQE7ONxgiI8QmUBlx6UsnTVtTrWtBTixt1vUNYYDLV/gIhAN2ZbU8Fj7QOrwQtdsQEBWrGI9uwce2s693tZaRTdeDS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442740},"type":"module","_from":"file:bopodev-api-0.1.21.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/475116128529ab7d3b54e0d091fe4bc9/bopodev-api-0.1.21.tgz","_integrity":"sha512-LI+FGiGZlZgwdYmHGiAmK7JaS2oizl4J9fpx0BqbUmXcnB7sLxhL8IEB6iybuYuSi46ho6Gty7x1CZE5qr6uLw==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.21","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.21","bopodev-contracts":"0.1.21"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.21_1773788552777_0.6144444879639799","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"bopodev-api","version":"0.1.22","license":"MIT","_id":"bopodev-api@0.1.22","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"6cc42d1e7d5b3b5a4373575262c6903067b0f99f","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.22.tgz","fileCount":48,"integrity":"sha512-s+X5U+5hxL2FnBCMAoUiBv8zTadpZKsLagoaP+mheHsi+ulhZnP6mMnpNhZKgkrSg5wjZ3SY4lvDLU81qh2OsQ==","signatures":[{"sig":"MEUCIQC6J6toPVpSMN1TIYbecrMHMPt3ttAVYKYeFYTTiPVhzAIgIv2MH4aJ5jTeHT0ZYuPjD01pxF4qt1Azut1BNdvA+Qs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442740},"type":"module","_from":"file:bopodev-api-0.1.22.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/5260d135333c1cfec406530c859f7a54/bopodev-api-0.1.22.tgz","_integrity":"sha512-s+X5U+5hxL2FnBCMAoUiBv8zTadpZKsLagoaP+mheHsi+ulhZnP6mMnpNhZKgkrSg5wjZ3SY4lvDLU81qh2OsQ==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.22","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.22","bopodev-contracts":"0.1.22"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.22_1773791831557_0.9005503927224434","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"bopodev-api","version":"0.1.23","license":"MIT","_id":"bopodev-api@0.1.23","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"8059cab2516c9eb46b3a0019bfdf692e186d9a09","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.23.tgz","fileCount":48,"integrity":"sha512-0bPi3C+MwsSli3Uu3pZcR7fHQukF9IcJ0VTo6sI+AZHpAjDwMnRa0azEoT8UUdFd+v30Q62D8aG5BOfI8A/ueA==","signatures":[{"sig":"MEUCIQCvjHuVKHGxLSnbLJnCpQ+KfU7Dk2KQfm3j+1MLizg7SgIgLIKepnJJ1wUG9U0NWNhLfvr5xXVZI70Dwm2fSs1Bd2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442740},"type":"module","_from":"file:bopodev-api-0.1.23.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/a7df5b2867f54fdb1909a38ee55ee0c2/bopodev-api-0.1.23.tgz","_integrity":"sha512-0bPi3C+MwsSli3Uu3pZcR7fHQukF9IcJ0VTo6sI+AZHpAjDwMnRa0azEoT8UUdFd+v30Q62D8aG5BOfI8A/ueA==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.23","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.23","bopodev-contracts":"0.1.23"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.23_1773792838196_0.4178063230047655","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"bopodev-api","version":"0.1.24","license":"MIT","_id":"bopodev-api@0.1.24","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"5b4f2543a4a02b3ae3a7e0542454d6783b645b7c","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.24.tgz","fileCount":48,"integrity":"sha512-U01549CD98xrfk30vkLxBwbVqkY+hVFZETcmO7KWbqxcKpWJJQmrzFyyHWusRib+TssHZdH07LU74WKKxQH3hQ==","signatures":[{"sig":"MEUCIQC8jJaMVZdpKhMLfEGedC+IdaVMdzvfvdzkx4xty0EhGgIgHhtEf5uTfMDu74ViXrmu2DW17hblDOTfDckSidNQR3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442740},"type":"module","_from":"file:bopodev-api-0.1.24.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/014e7c2384dc5d47e37f7fdb0e4b6dc8/bopodev-api-0.1.24.tgz","_integrity":"sha512-U01549CD98xrfk30vkLxBwbVqkY+hVFZETcmO7KWbqxcKpWJJQmrzFyyHWusRib+TssHZdH07LU74WKKxQH3hQ==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.24","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.24","bopodev-contracts":"0.1.24"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.24_1773792954011_0.2239750625385557","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"bopodev-api","version":"0.1.25","license":"MIT","_id":"bopodev-api@0.1.25","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"d6ffce6c4c1d39b4cb777a8a46617831b000bf8d","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.25.tgz","fileCount":54,"integrity":"sha512-vHx0lwk3umiu25O8um9w/RklWe56qgC7UyHUjpuzwDNxk+lqNVs3EccYjR/LEozEiyqYRPc+ocgyfo3VzfBSrg==","signatures":[{"sig":"MEYCIQCgwzeEoaODS4WXRFzLoOaFiO+cxXLEch6nAyxcNV9fFAIhAKOkRyZ1z8HfUZFnRnBlf+dYAYokusZJeuXGbMYCVy8P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558355},"type":"module","_from":"file:bopodev-api-0.1.25.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/6aa8fd5d96190166c6e02be271c1255f/bopodev-api-0.1.25.tgz","_integrity":"sha512-vHx0lwk3umiu25O8um9w/RklWe56qgC7UyHUjpuzwDNxk+lqNVs3EccYjR/LEozEiyqYRPc+ocgyfo3VzfBSrg==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.25","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.25","bopodev-contracts":"0.1.25"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.25_1773854058723_0.5547727334295167","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"bopodev-api","version":"0.1.26","license":"MIT","_id":"bopodev-api@0.1.26","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"e6922f9e95d68954ee9113b9b162858259bccad6","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.26.tgz","fileCount":54,"integrity":"sha512-tKmaPePtPFtCJZFDcpyOILsdRXKCeqskMKJBoB8TqsWW9oKOZHLpjDZ/vC+IeeswVbGO1BKOwEq3WUuo9llaJA==","signatures":[{"sig":"MEYCIQCNbqF2nQMGuKVtavRLTo1YvIcNs87kg4DA2OrUoXF8ZQIhAIOJ3RsQZcKIFN1jW0eItvHx3H29+QWpjiAJIclo52rl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606725},"type":"module","_from":"file:bopodev-api-0.1.26.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/08119c9bcebc99042d0690707e805a8e/bopodev-api-0.1.26.tgz","_integrity":"sha512-tKmaPePtPFtCJZFDcpyOILsdRXKCeqskMKJBoB8TqsWW9oKOZHLpjDZ/vC+IeeswVbGO1BKOwEq3WUuo9llaJA==","_npmVersion":"10.9.0","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.26","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.26","bopodev-contracts":"0.1.26"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.26_1773939954238_0.11073802895754925","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"bopodev-api","version":"0.1.27","license":"MIT","_id":"bopodev-api@0.1.27","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"82b93fdbbb2f55722053bd38ebe307f34d37562b","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.27.tgz","fileCount":62,"integrity":"sha512-1/f6lamR10U7O6NtxGzVf0sXyK3SPTB0iOc3ojoMA7Mn1CuJ1FmWrofcFjFOlSFHNRhbp4m/DOinyuilCm1FVw==","signatures":[{"sig":"MEUCIQDVHGfEApl2xypGDOJspIWApeLAwYo8W7IDLI/bPbKrtgIgZKDluQhc50tX8XPKPWMx6RcEf8aj8JnXO5d5EHUz6dY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":615392},"type":"module","_from":"file:bopodev-api-0.1.27.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/ca76ae96358a5785c94d064ee7a175c7/bopodev-api-0.1.27.tgz","_integrity":"sha512-1/f6lamR10U7O6NtxGzVf0sXyK3SPTB0iOc3ojoMA7Mn1CuJ1FmWrofcFjFOlSFHNRhbp4m/DOinyuilCm1FVw==","_npmVersion":"10.9.0","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.27","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.27","bopodev-contracts":"0.1.27"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.27_1774027028485_0.14764721434774652","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"bopodev-api","version":"0.1.28","license":"MIT","_id":"bopodev-api@0.1.28","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"2692ca6461b0057556fc03a3773db98a0261a214","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.28.tgz","fileCount":63,"integrity":"sha512-m8J5Savbd6wn1jLBS+HpgV1IJ2ZVpa3kyo/yQC9oPYuuT5sJ07UjCiQ4tFQ8vWyhoJ0it0XXR1T5dzNogY3Egw==","signatures":[{"sig":"MEUCIQCb/oNLLhYFurNWxPaNXOT0Jyfg+ixQXlO47L+7YR3ftwIgSV8wEH0J1kx8UofISMmB+4++Xfm+pCtRDCEcBCJyrP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":620971},"type":"module","_from":"file:bopodev-api-0.1.28.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/9ab4dd1985f223affee16a8617560265/bopodev-api-0.1.28.tgz","_integrity":"sha512-m8J5Savbd6wn1jLBS+HpgV1IJ2ZVpa3kyo/yQC9oPYuuT5sJ07UjCiQ4tFQ8vWyhoJ0it0XXR1T5dzNogY3Egw==","_npmVersion":"10.8.2","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.28","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.28","bopodev-contracts":"0.1.28"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.28_1774047154823_0.653248740085862","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"bopodev-api","version":"0.1.29","license":"MIT","_id":"bopodev-api@0.1.29","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"3a8eef7a5fc05c6e2d16360155695fb8e37cea5b","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.29.tgz","fileCount":86,"integrity":"sha512-T/sPI5SqiK1XHVCAGvKGumdAvqF2K3MJ1sctC8m5oH6ihruGvNc1NyEiMpLY5RdOhNIYFO7JOBQh02Gd31X/9w==","signatures":[{"sig":"MEYCIQD7Rd8FP+afrpgMDzJUT/3Z4PeWfY83LvNQWZdAeDf+fAIhAP/ekGzBB5436fHnGwfOzKR5RmsLun4qFLepKx9NUrYW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":632882},"type":"module","_from":"file:bopodev-api-0.1.29.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/d07c2435402f30a623ccf2571b5eca1b/bopodev-api-0.1.29.tgz","_integrity":"sha512-T/sPI5SqiK1XHVCAGvKGumdAvqF2K3MJ1sctC8m5oH6ihruGvNc1NyEiMpLY5RdOhNIYFO7JOBQh02Gd31X/9w==","_npmVersion":"10.8.2","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.29","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.29","bopodev-contracts":"0.1.29"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.29_1774306700464_0.9954791396826539","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"bopodev-api","version":"0.1.30","license":"MIT","_id":"bopodev-api@0.1.30","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"09c0682adca1cdc56f58e06bdddce3159dc3f9aa","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.30.tgz","fileCount":86,"integrity":"sha512-9V5Gmh6qtfwkapVL6QantZljW+CvfrKTeDiPbLLPGZw/hOgylPnDGfhtzMQFankqS+CY70H5jQgRBQkrkSSzQA==","signatures":[{"sig":"MEUCIQDiUYBKEEatfbOif+UqbNga17fGaHF/gsWgCr6UPfEUMgIga17HIw/kxUlTGYNJgdaxybuLxlz33zr0X3UtHdMuUCw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":637895},"type":"module","_from":"file:bopodev-api-0.1.30.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/43990bba88a2d49d6c85eddc3b3ec744/bopodev-api-0.1.30.tgz","_integrity":"sha512-9V5Gmh6qtfwkapVL6QantZljW+CvfrKTeDiPbLLPGZw/hOgylPnDGfhtzMQFankqS+CY70H5jQgRBQkrkSSzQA==","_npmVersion":"10.9.0","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.30","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.30","bopodev-contracts":"0.1.30"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.30_1774368579105_0.8739491795073318","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"bopodev-api","version":"0.1.31","license":"MIT","_id":"bopodev-api@0.1.31","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"5775fb5b78e8e1f6e9fb03ca6f34fa37b08be4a0","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.31.tgz","fileCount":91,"integrity":"sha512-B0fpHXQeWGX+VO2V5olqNfyypSOX6qYZQxNIzvinf6doccGaMhA0qUlmrAvgj34RZKH3hDVF/oCp9qwJVMZNFw==","signatures":[{"sig":"MEUCIAaJm1s3oBLRUED0jIhMhADsoI7P9SSg25FnoYLOgerGAiEAw8rEUh+zuW2RT5el6n208ag7tPfQtbwcukPeHqLh7aY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687392},"type":"module","_from":"file:bopodev-api-0.1.31.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/ec1b50f4a15947a5748682d91139085e/bopodev-api-0.1.31.tgz","_integrity":"sha512-B0fpHXQeWGX+VO2V5olqNfyypSOX6qYZQxNIzvinf6doccGaMhA0qUlmrAvgj34RZKH3hDVF/oCp9qwJVMZNFw==","_npmVersion":"10.9.0","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","dotenv":"^17.0.1","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","bopodev-db":"0.1.31","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.31","bopodev-contracts":"0.1.31"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.31_1774549109609_0.46191019091876506","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"bopodev-api","version":"0.1.32","license":"MIT","_id":"bopodev-api@0.1.32","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"9a26a609469d68bd46747cb52244d8b1f929bc6e","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.32.tgz","fileCount":99,"integrity":"sha512-OQRIlBXYll6XkLlyLePgKsS+VnVWQy7kc6vsrFRYNJoM5fddpixu1pU+5ONTfCa7X3GyZV5lB3qd1oABmHI5uw==","signatures":[{"sig":"MEUCIQD65yHZiB8sWvdrtDxUfFmqeV+4wLZgDusCgyJi22PvwQIgHdv8Z7OJSglyvNUwP0ZdPFySIE/0g7SJ4RhAmgwtyEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":798718},"type":"module","_from":"file:bopodev-api-0.1.32.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/2ad69dfc1d34e089d95e6bb990e17508/bopodev-api-0.1.32.tgz","_integrity":"sha512-OQRIlBXYll6XkLlyLePgKsS+VnVWQy7kc6vsrFRYNJoM5fddpixu1pU+5ONTfCa7X3GyZV5lB3qd1oABmHI5uw==","_npmVersion":"10.9.0","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","yaml":"^2.8.3","dotenv":"^17.0.1","fflate":"^0.8.2","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","archiver":"^7.0.1","bopodev-db":"0.1.32","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.32","bopodev-contracts":"0.1.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3","@types/archiver":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.32_1774632840414_0.4954691373132758","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"bopodev-api","version":"0.1.33","license":"MIT","_id":"bopodev-api@0.1.33","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"8d27601bb595d3b6e803b06baf2816b6e1757d85","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.33.tgz","fileCount":104,"integrity":"sha512-YO9dma2Zwp22j3BIz6KWVz+z/pD2vhzr+mtIFwEAJHQkiwyTtop3/0FydwAD2sFyeOV3e4wRxSKsUdeIc15L4w==","signatures":[{"sig":"MEUCIQCDgARDtNsnifablbZYpzr/R2TpsbuRHPO/oSDfkGqsCAIgTI2SjENnbMEJcv0pPPgtA3Hwx2oM4ad5vLKE+c6AqPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":839168},"type":"module","_from":"file:bopodev-api-0.1.33.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/c1/l0n6m4g16zl0wxntzzv9z4980000gn/T/1e5acbc4e99c5cab7e70b7cf70b16df7/bopodev-api-0.1.33.tgz","_integrity":"sha512-YO9dma2Zwp22j3BIz6KWVz+z/pD2vhzr+mtIFwEAJHQkiwyTtop3/0FydwAD2sFyeOV3e4wRxSKsUdeIc15L4w==","_npmVersion":"10.9.0","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","yaml":"^2.8.3","dotenv":"^17.0.1","fflate":"^0.8.2","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","archiver":"^7.0.1","turndown":"^7.2.2","bopodev-db":"0.1.33","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.33","bopodev-contracts":"0.1.33"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3","@types/archiver":"^7.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.33_1774887885965_0.0949321994395842","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"bopodev-api","version":"0.1.34","license":"MIT","_id":"bopodev-api@0.1.34","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"924381af6e7480a64a891118dbc8dde60ad6d3ec","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.34.tgz","fileCount":104,"integrity":"sha512-oulBCE2KtZj4SBjFO7Chr19NWfEmCDHrU9fVli74DvTnlGakNV6k0y/w+BCBAvK5IHqqNiGpoo053/MWOBLdoA==","signatures":[{"sig":"MEYCIQDe52Ht5wSW5orLKRFK4HE5m9Am+CKlotY+X79//pQscwIhAPqtmHao3va0C7LZI6pnF/Ke7EOIsaGjpWA6F566w/ZG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":839168},"type":"module","_from":"file:bopodev-api-0.1.34.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/401b09184080ab4ad7913641d3968265/bopodev-api-0.1.34.tgz","_integrity":"sha512-oulBCE2KtZj4SBjFO7Chr19NWfEmCDHrU9fVli74DvTnlGakNV6k0y/w+BCBAvK5IHqqNiGpoo053/MWOBLdoA==","_npmVersion":"10.8.2","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","yaml":"^2.8.3","dotenv":"^17.0.1","fflate":"^0.8.2","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","archiver":"^7.0.1","turndown":"^7.2.2","bopodev-db":"0.1.34","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.34","bopodev-contracts":"0.1.34"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3","@types/archiver":"^7.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.34_1774909169388_0.8253904632812605","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"name":"bopodev-api","version":"0.1.35","license":"MIT","_id":"bopodev-api@0.1.35","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"4a49f261acba3653bd37c6d433a229d26fec0106","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.35.tgz","fileCount":167,"integrity":"sha512-1KBrJ86XJZeqR3jXYm64PBrzgD0UPP96yGoxKnSm9UhnE0zCe9blQiDHdl8lR7A56GFIlYAi8hfwcOLbuoG6Jw==","signatures":[{"sig":"MEUCIEM0oI6Im0JTUzg12nGKqVylcY4dUpX6PX6OZ3WoYXUVAiEA57qW2R5syudpGZxiynY0HKYcIrz49eHGE8z3wLp1ffA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":958845},"type":"module","_from":"file:bopodev-api-0.1.35.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json && node ./scripts/copy-assets.mjs","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/a8d786eccd981082d25e12504098ae99/bopodev-api-0.1.35.tgz","_integrity":"sha512-1KBrJ86XJZeqR3jXYm64PBrzgD0UPP96yGoxKnSm9UhnE0zCe9blQiDHdl8lR7A56GFIlYAi8hfwcOLbuoG6Jw==","_npmVersion":"10.8.2","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","yaml":"^2.8.3","dotenv":"^17.0.1","fflate":"^0.8.2","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","archiver":"^7.0.1","turndown":"^7.2.2","bopodev-db":"0.1.35","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.35","bopodev-contracts":"0.1.35"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3","@types/archiver":"^7.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.35_1775079951773_0.42809372709669624","host":"s3://npm-registry-packages-npm-production"}},"0.1.36":{"name":"bopodev-api","version":"0.1.36","license":"MIT","_id":"bopodev-api@0.1.36","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"dist":{"shasum":"f91392a53afaee4960bfb44bec4a87265ed73878","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.36.tgz","fileCount":168,"integrity":"sha512-JJvtT2o1VJL+9agLer+kGnOyrwPrGZkd+yBjy68Z4C5Ow0opQECgwViNdsEgCH9INY4Z3PzebxQcko6vMGnGXw==","signatures":[{"sig":"MEUCIG2Ax3vSDfwK5D+QVznNxRBukHb4QcUAS7ZifvRWWjNlAiEAmew4NPxyijUjY6eRCTkumDhqP6qeXG14ev67it1RiTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":988290},"type":"module","_from":"file:bopodev-api-0.1.36.tgz","scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","lint":"tsc -p tsconfig.json --noEmit","build":"tsc -p tsconfig.json && node ./scripts/copy-assets.mjs","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","typecheck":"tsc -p tsconfig.json --noEmit","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts"},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/a4c28ef487117df61bda680a902211b0/bopodev-api-0.1.36.tgz","_integrity":"sha512-JJvtT2o1VJL+9agLer+kGnOyrwPrGZkd+yBjy68Z4C5Ow0opQECgwViNdsEgCH9INY4Z3PzebxQcko6vMGnGXw==","_npmVersion":"10.8.2","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^4.1.5","cors":"^2.8.5","yaml":"^2.8.3","dotenv":"^17.0.1","fflate":"^0.8.2","multer":"^2.1.1","nanoid":"^5.1.5","express":"^5.1.0","archiver":"^7.0.1","turndown":"^7.2.2","bopodev-db":"0.1.36","cron-parser":"^5.3.1","drizzle-orm":"^0.44.5","bopodev-agent-sdk":"0.1.36","bopodev-contracts":"0.1.36"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","@types/ws":"^8.18.1","@types/cors":"^2.8.19","@types/multer":"^2.1.0","@types/express":"^5.0.3","@types/archiver":"^7.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/bopodev-api_0.1.36_1775581118211_0.22611528832623273","host":"s3://npm-registry-packages-npm-production"}},"0.1.37":{"name":"bopodev-api","version":"0.1.37","license":"MIT","type":"module","dependencies":{"archiver":"^7.0.1","cors":"^2.8.5","cron-parser":"^5.3.1","dotenv":"^17.0.1","drizzle-orm":"^0.44.5","express":"^5.1.0","fflate":"^0.8.2","multer":"^2.1.1","nanoid":"^5.1.5","turndown":"^7.2.2","ws":"^8.19.0","yaml":"^2.8.3","zod":"^4.1.5","bopodev-agent-sdk":"0.1.37","bopodev-contracts":"0.1.37","bopodev-db":"0.1.37"},"devDependencies":{"@types/archiver":"^7.0.0","@types/cors":"^2.8.19","@types/express":"^5.0.3","@types/multer":"^2.1.0","@types/turndown":"^5.0.6","@types/ws":"^8.18.1","tsx":"^4.20.5"},"scripts":{"dev":"PORT=${API_PORT:-4020} tsx watch src/server.ts","start":"PORT=${API_PORT:-4020} tsx src/server.ts","db:init":"tsx src/scripts/db-init.ts","onboard:seed":"tsx src/scripts/onboard-seed.ts","workspaces:backfill":"tsx src/scripts/backfill-project-workspaces.ts","build":"tsc -p tsconfig.json && node ./scripts/copy-assets.mjs","lint":"tsc -p tsconfig.json --noEmit","typecheck":"tsc -p tsconfig.json --noEmit"},"_id":"bopodev-api@0.1.37","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","_integrity":"sha512-1j/N3fMJhPJlO3LOx0vqbtia+FdNl7WrMWaCX5Nq2VEgaenODgqG+I3qJvtuRqYLiTD/1NT4hYZw7qCWX9K0YQ==","_resolved":"/private/var/folders/qt/rxn62kl5395cctvlgmnb4x9m0000gn/T/454fdb25b8de1f5a3af9bba94fd384f6/bopodev-api-0.1.37.tgz","_from":"file:bopodev-api-0.1.37.tgz","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-1j/N3fMJhPJlO3LOx0vqbtia+FdNl7WrMWaCX5Nq2VEgaenODgqG+I3qJvtuRqYLiTD/1NT4hYZw7qCWX9K0YQ==","shasum":"b503693a99f6de45ad63822f9c4391021795824b","tarball":"https://registry.npmjs.org/bopodev-api/-/bopodev-api-0.1.37.tgz","fileCount":168,"unpackedSize":988290,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBswuDOlQ6YiJXeN0WY0TwP6vJ8ZpjqQo1H6tf/DtyUIAiBexMt/UeiU7In71mIweLf23zC0RjFMq0nSG9vDOeGW1w=="}]},"_npmUser":{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"},"directories":{},"maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bopodev-api_0.1.37_1775771003733_0.621638327238897"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-08T19:52:43.979Z","modified":"2026-04-09T21:43:24.077Z","0.1.1":"2026-03-08T19:52:44.248Z","0.1.2":"2026-03-08T20:01:23.931Z","0.1.3":"2026-03-08T20:16:44.718Z","0.1.4":"2026-03-08T20:26:28.937Z","0.1.5":"2026-03-08T20:38:18.633Z","0.1.6":"2026-03-08T20:42:39.346Z","0.1.7":"2026-03-08T20:49:50.430Z","0.1.8":"2026-03-08T21:08:41.277Z","0.1.9":"2026-03-09T23:32:25.192Z","0.1.10":"2026-03-09T23:34:51.766Z","0.1.11":"2026-03-10T14:23:40.380Z","0.1.12":"2026-03-10T14:25:47.046Z","0.1.13":"2026-03-12T11:17:49.233Z","0.1.14":"2026-03-12T17:29:05.709Z","0.1.15":"2026-03-13T00:30:48.233Z","0.1.16":"2026-03-13T15:38:01.101Z","0.1.17":"2026-03-13T23:32:32.352Z","0.1.18":"2026-03-14T16:43:15.873Z","0.1.19":"2026-03-17T12:11:10.593Z","0.1.21":"2026-03-17T23:02:32.994Z","0.1.22":"2026-03-17T23:57:11.808Z","0.1.23":"2026-03-18T00:13:58.358Z","0.1.24":"2026-03-18T00:15:54.219Z","0.1.25":"2026-03-18T17:14:18.897Z","0.1.26":"2026-03-19T17:05:54.393Z","0.1.27":"2026-03-20T17:17:08.659Z","0.1.28":"2026-03-20T22:52:34.995Z","0.1.29":"2026-03-23T22:58:20.672Z","0.1.30":"2026-03-24T16:09:39.450Z","0.1.31":"2026-03-26T18:18:29.904Z","0.1.32":"2026-03-27T17:34:00.631Z","0.1.33":"2026-03-30T16:24:46.184Z","0.1.34":"2026-03-30T22:19:29.540Z","0.1.35":"2026-04-01T21:45:51.962Z","0.1.36":"2026-04-07T16:58:38.409Z","0.1.37":"2026-04-09T21:43:23.958Z"},"license":"MIT","description":"Express API, websocket hub, and heartbeat scheduler runtime for Bopo.","maintainers":[{"name":"dkrusenstrahle","email":"dkrusenstrahle@gmail.com"}],"readme":"# `apps/api`\n\nExpress API, websocket hub, and heartbeat scheduler runtime for Bopo.\n\n## Responsibilities\n\n- Serve HTTP routes for planning, execution, governance, observability, plugins, and templates.\n- Attach websocket hub on `/realtime` for company-scoped live updates.\n- Run heartbeat scheduler/queue worker based on `BOPO_SCHEDULER_ROLE`.\n\n## Runtime Entry Points\n\n- `src/server.ts` - startup, env loading, realtime bootstrap, scheduler ownership.\n- `src/app.ts` - middleware, route mounting, error handling.\n- `src/routes/*.ts` - route groups.\n- `src/worker/scheduler.ts` - periodic sweep orchestration.\n\n## Local Development\n\nFrom repository root (recommended):\n\n- `pnpm dev` or `pnpm start`\n\nFrom this package directly:\n\n- `pnpm --filter bopodev-api dev`\n- `pnpm --filter bopodev-api start`\n- `pnpm --filter bopodev-api db:init`\n- `pnpm --filter bopodev-api onboard:seed`\n- `pnpm --filter bopodev-api workspaces:backfill`\n\nDefault port is `4020` (`API_PORT`/`PORT`).\n\n## Key Route Groups\n\n- `/auth`, `/attention`, `/companies`, `/projects`, `/issues`, `/goals`\n- `/agents`, `/governance`, `/heartbeats`, `/observability`\n- `/plugins`, `/templates`\n\n## Related Docs\n\n- `docs/developer/api-reference.md`\n- `docs/developer/configuration-reference.md`\n- `docs/operations/deployment.md`\n","readmeFilename":"README.md"}