{"_id":"dev-sessions","_rev":"30-740e487edbcbcfbf8f09657c87064995","name":"dev-sessions","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"dev-sessions","version":"0.1.0","license":"MIT","_id":"dev-sessions@0.1.0","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"f299774a22d3e9b1bf8846cd94dd2013840d7982","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.1.0.tgz","fileCount":36,"integrity":"sha512-syaU6e9xuRaei92H0rv2HCb7FxuHaQ/MOMiinsgWo/3uxJ2hYaL34I32VQ3Xb/yUEyrgHxAul8s2YasZoGA2pQ==","signatures":[{"sig":"MEQCIFeLwRigR+89cEr2oQJ2kCkMhQbJerS6H0JMd0/T5ht+AiA1IM4Eo2AVHMhptwecRk9lgZRXAjT1SKPYWz8QiZ2QlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219459},"engines":{"node":">=18"},"gitHead":"d5f118c440f52e499668b2bc548af3b81a615861","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.1.0_1771776730685_0.685080555665446","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"dev-sessions","version":"0.1.1","license":"MIT","_id":"dev-sessions@0.1.1","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"eafbf923ad8537c3a7f0212ff09e0b292ab85327","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.1.1.tgz","fileCount":36,"integrity":"sha512-nEVyPOs6jEnV7MBY+t0a2o0ksJsvh5ktgd6u/BK7TRucScA6mrkTjrLPXn2vKDynjwl14ehoEYTQIu9pqdJV1g==","signatures":[{"sig":"MEUCIFMK1yMAuRE60S/ezVPmWK1KJleTtHMLh0eLhZ+Y0NjXAiEAvfqWBelRAknfrCQQm3vzFC4c7Bh+Vq+Ze+Nz42tECJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220101},"engines":{"node":">=18"},"gitHead":"197e79c90610b9c3a769190e2f588c50f06a598f","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.1.1_1771777753583_0.9733155960231101","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"dev-sessions","version":"0.2.0","license":"MIT","_id":"dev-sessions@0.2.0","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"8861c1aa1310209f88322288c91194f8a37d81ba","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.0.tgz","fileCount":40,"integrity":"sha512-ptFv9oYYFf0v59ogOEujZbx+lQ6JSGZgxpWbeq48H5ZrlIrCakkhuRsUpYo8hj/J4jtxmUQxxY7qUw1BemPbFw==","signatures":[{"sig":"MEQCIHedGTaleVsu9M08MRiCHaNOZV5pt7FBGIl2hvDhD6A3AiAilenh21FkdEmz3cIwUE2aKNvIMvs6BgMSjdQtpD/PIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246845},"engines":{"node":">=18"},"gitHead":"a3ffa1f29b4904c846672a4886b33f980bc4610a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.0_1771781564958_0.696282393013343","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"dev-sessions","version":"0.2.1","license":"MIT","_id":"dev-sessions@0.2.1","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"14836cfc80ab198ed03b3bef3d7081554e60777d","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.1.tgz","fileCount":40,"integrity":"sha512-18uZDgPgSbeJ4UBD9bF3DRRI3YYkQW7YLIiz3FmJwZ+o7VW8qfI7io75bkiW+G7xoJ4bce/f9lC1/O1Qt/MSUg==","signatures":[{"sig":"MEYCIQCv6f6oB/uZpw3iOK2vDrmGRcB/NB2FyjdQwid0zTigvgIhAOVKSuPlhetiq+OSEphmehszrUdhLiuAThlqRRzpnB9b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262565},"engines":{"node":">=18"},"gitHead":"a3ffa1f29b4904c846672a4886b33f980bc4610a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.1_1771804022462_0.5455291617166274","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"dev-sessions","version":"0.2.2","license":"MIT","_id":"dev-sessions@0.2.2","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"478892d5898ea2857f2d02de8a77015625468f50","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.2.tgz","fileCount":40,"integrity":"sha512-JFm3yqb3g4aopHeKvuDQhzv4seNnW784Q61z6a+1nU6XpQZQtCRT/X9/rsmpBAyk+2OFF/J3IgVsNzTHkgdG4g==","signatures":[{"sig":"MEQCIGTsHwBKVg+vhroh7DvsrOZTu63aEIOLZCSKsoSIa6AGAiBjE7wXJN0rELGnWvm+frcID5Us/yY7RkyyaeqsgtODMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259156},"engines":{"node":">=18"},"gitHead":"a3ffa1f29b4904c846672a4886b33f980bc4610a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.2_1771812729419_0.08172056049023979","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"dev-sessions","version":"0.2.3","license":"MIT","_id":"dev-sessions@0.2.3","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"68699393669188e76e5e8f6b1b1d59af299c5b9f","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.3.tgz","fileCount":50,"integrity":"sha512-xBS3fDf9maHu133QirJcUApBRSJPBsgc8x/DR6RgkYxA+NR2llXd7yEA2Vnuuv7q/zksHkdu2a9ilntajE3R+g==","signatures":[{"sig":"MEUCIAHY1H6WcQdxH255QKvTj/7LMqPT4xEHY+mTbwQeQ4bDAiEA185ZhcrQH7JxGB47aV6I3fYcqtMLgguUzVzCC3iC+lg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306930},"engines":{"node":">=18"},"gitHead":"9c151775dc8eace6b1f8aa1681c01b74e7481b16","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.3_1771902443416_0.822169238128883","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"dev-sessions","version":"0.2.4","license":"MIT","_id":"dev-sessions@0.2.4","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"8e836d31faf926bab00f29b5c4e61660e34c201f","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.4.tgz","fileCount":50,"integrity":"sha512-SV0DkGv5TUEnfO6Lys2KWplEx8A6ftayVf+YRMF3JJ8UOc7DcgF2eDNQPMMd6568YIz4BicBV+/Ke7h1pzNTrQ==","signatures":[{"sig":"MEUCIQCdr4Vim+RYSQGJ9Yx5CALiLi/nQkeSgCLYu+YcOp71nAIgLq68facCbDoZ5HEnq59JcpmwNM4mWAKiFj+SbIR5pNA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":312390},"engines":{"node":">=18"},"gitHead":"1b8b563cc6d93e48994d877ea63edea363d21e39","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.4_1771965280372_0.5817225251797826","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"dev-sessions","version":"0.2.5","license":"MIT","_id":"dev-sessions@0.2.5","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"39012d46353cc46234b9e0f742142bedc5e8ef68","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.5.tgz","fileCount":50,"integrity":"sha512-rR1IuGOKlFLOLCD36baLTl4if2EtEo/RJSUe4oAUZ/C49x/YRBGt5OgUmIHs6eN2Ahin720vAn/ar8oMUjneSw==","signatures":[{"sig":"MEYCIQD7BdYs5+HSxzc7nngXKLjgvFvkcoP/WMWB9hvmQstFqQIhAJ4EaL3VzJF9Q1ux4koTVHL2KhcaNMg18zOL1vOeQx/3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":314925},"engines":{"node":">=18"},"gitHead":"a340907cfd00fd8de58327c84fdf621d5e83e7d5","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.5_1772133494696_0.04714984470762751","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"dev-sessions","version":"0.2.6","license":"MIT","_id":"dev-sessions@0.2.6","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"2c0f2c45af65cd96d031c617f353cd4b1effa92b","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.6.tgz","fileCount":50,"integrity":"sha512-ERDCXYNQ2vzoBwc89O4F7Ldyiqq3cPa6tyMWStNgmlNsq5PBi55kRgH3/SStwwbz0lfsSJEmyicVBN8rYCrGWA==","signatures":[{"sig":"MEQCIHtWBn86/dshGZYwRrOeuZE3gkeg7xRLzR3N9deRiYZUAiAU6e9EiWX+I+RLUUgcBOr5qfxW1xeD5OR9tYvGFh1VQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317145},"engines":{"node":">=18"},"gitHead":"d0115e5f58fb062d95b1e211df51e544deec3809","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.6_1772134707347_0.5927204094215417","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"dev-sessions","version":"0.2.7","license":"MIT","_id":"dev-sessions@0.2.7","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"c2948a30071c04a7089af6178895ae7b06a16d7a","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.7.tgz","fileCount":50,"integrity":"sha512-LC66DPdf73ttbg4A1XozFF5buMhO+PUy39S+8m/aPGQ762aZl8aCXoxlNOGNUAkbpb91VUD3xVuSF5exbAAoVA==","signatures":[{"sig":"MEUCIQC8hPsn28A7LQWuJiqud4CN7PiVko/4N8yvzra9/0J0UAIgfHPMi54QGDQ6u4cZNIrufG4NVkHzconNmwQIUts6Ikg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318512},"engines":{"node":">=18"},"gitHead":"0e0580cfe76eb143ac41ec99f809fa323ef66daa","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.7_1772553066583_0.1621708965542421","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"dev-sessions","version":"0.2.8","license":"MIT","_id":"dev-sessions@0.2.8","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"bc1f58338c91b420c517b9c819467fe99a9a2137","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.8.tgz","fileCount":50,"integrity":"sha512-WB4yR/sUq8LPjN5HnajJw6gsBVP3ItFmQOv+YEfNxIK38RLBfKX4bhFpJBkezXhv0kf35JGCJA2SkfaBbNNoRw==","signatures":[{"sig":"MEUCIQDgp9ssTT174AGTseyKa641K67MQLXugq571B6wWmyy3AIgJQTcaLbck2625c7PXOv5pgpBN9BPW2VYdJs64OqTAjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318576},"engines":{"node":">=18"},"gitHead":"0e0580cfe76eb143ac41ec99f809fa323ef66daa","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.8_1772553570816_0.7576770617823263","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"dev-sessions","version":"0.2.9","license":"MIT","_id":"dev-sessions@0.2.9","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"98e7cf77cde9f2c945664af1cbadb00d884a24dd","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.9.tgz","fileCount":50,"integrity":"sha512-xHi+4IkJtxSe6U2TFWt8MxqUC1f2KHiQBsObYBSDEGZixCTtJdNAdAN1zVHSrB61/4KVkFWxKWOglQKhsHfggg==","signatures":[{"sig":"MEUCIQD20CSSLMiDyahGxuCs1xsML4GhU/A4meM9sQruGRRmTwIgfChliUj5ojmF6UcAZeaNSBDQbH9XbFsQDwoeYZ4nsfY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318597},"engines":{"node":">=18"},"gitHead":"9470ed0802bae4e5c2c205d6933c58039baa2d0f","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.9_1772554354556_0.4482236740731522","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"dev-sessions","version":"0.2.10","license":"MIT","_id":"dev-sessions@0.2.10","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"42e8b6312aa498e5913e3fd446d5dc7debc72493","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.10.tgz","fileCount":50,"integrity":"sha512-U06a8N2ZcZpz48tdUAvzuE6jYrsgZovPlxm7zxP0SDXOTj+3MSLUbAcEIMjDM2TaIGO9B+SgDxUYdolqH9bMcg==","signatures":[{"sig":"MEUCIQDS3qhnZZom+z5HPoHSSdYVooCHtblrPRM6S2U+/4hxNQIgUkQ+nU7cyO8atDm7PeN/88VmaNGUtAqmvBdj6BM9NEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318644},"engines":{"node":">=18"},"gitHead":"9470ed0802bae4e5c2c205d6933c58039baa2d0f","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.10_1772554373203_0.8126335596921892","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"dev-sessions","version":"0.2.11","license":"MIT","_id":"dev-sessions@0.2.11","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"f73c55459a9075e5af2f45f202ae69ec0d3acfc7","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.11.tgz","fileCount":50,"integrity":"sha512-oNTOVUWEZMLHqN3B1bi+Iypz0NJCRFO75X6Ik2NKnm2zGg13w0+fUkd8h98mgb2EVEdkABxOKjo2+XuMePczPA==","signatures":[{"sig":"MEYCIQD7eUxJmPfnElQbv88HcWI+bD7PX7uTtN0fORhauRH/3gIhAPIGfrsEkWychfRiju/dXfSBYlgYyz0sCNR76Qhykv+s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320888},"engines":{"node":">=18"},"gitHead":"5461b7ecb1f72f8d5d486b7f4a5302abe7c2c926","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.11_1774213454446_0.3495305650218925","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"dev-sessions","version":"0.2.12","license":"MIT","_id":"dev-sessions@0.2.12","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"0fa41e95b0deabe764f0953811b24e5065ef3d7b","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.12.tgz","fileCount":50,"integrity":"sha512-g60qIEudUui7oYwNyLqFDF/A5MkP5mWx7Nfmo814bpDSa1Lf51sRPDJJVXcJF1CFEauOwQBl7b6j7FC9VKXI7Q==","signatures":[{"sig":"MEUCIAdbnNttgveGW4elqBzkq9oBT1sM3YbnJb2NstcjOEZQAiEAtZoOEZhxRLQsdOatQ6eZIhNo51M2nbpsz2u09j6Uj8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322172},"engines":{"node":">=18"},"gitHead":"ea3d13536ecde6357b0dc80c28bb0332b7389fde","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.12_1774297147724_0.5891465557685811","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"dev-sessions","version":"0.2.13","license":"MIT","_id":"dev-sessions@0.2.13","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"bee5f6c1211d89eb2dc2b7197ce1a56dd6c54840","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.13.tgz","fileCount":50,"integrity":"sha512-chOHSSuYDFwzOfNlZ9tqP2akHe34otX2mKPLwDWWhwSn5ahJ8n63r+fWKjaHv2S1X2dgND6NQAEHR0UNjjjXIg==","signatures":[{"sig":"MEYCIQC4oQjvYZLIj+gh8vy8Sl8hMg/Nj39AW3lbOBeLzVpMLwIhAKw5l8W6oSy1vC9NZRKO4Al0IDHEzmy787K6mwdQ+LU1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324383},"engines":{"node":">=18"},"gitHead":"b2e0353fd14b7ebf4a4f4cdd4e603d201536441d","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.13_1774464285255_0.9226654763281419","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"dev-sessions","version":"0.2.14","license":"MIT","_id":"dev-sessions@0.2.14","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"19cd553aa2e290be63312b3ce9db6c2c19ecb547","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.14.tgz","fileCount":50,"integrity":"sha512-zUGulgiRhmapnJWJBbJMpOPqtgCdBwmh/u4oJNphCiU1qJ3VBy8zV9vWcXX0OoOLW8SQ7C5yWLYxT/35GOGfGA==","signatures":[{"sig":"MEUCIQC1whvZkIWRIED6SspxsoU2WXaBmZJK1WieWqxyWhHklAIgb42MLRDIRzKgEkBbvsyytcS1lOurZwebZV+rxvzs+no=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335273},"engines":{"node":">=18"},"gitHead":"ea32fa3ca9d6495c348c3627ae2c789c5ead7697","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.14_1774585415241_0.6316778967753967","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"dev-sessions","version":"0.2.15","license":"MIT","_id":"dev-sessions@0.2.15","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"86d5e28ceabf573543648f10e4941e34d9f39a5c","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.2.15.tgz","fileCount":50,"integrity":"sha512-9H/jJPs5PsEdLv3KjKDSuEm4blvoB/tBgMbZgv82inNNuUkFCZD4ZCGG69wCjKt0v6PVVcbQix7jl0nUt797RQ==","signatures":[{"sig":"MEQCICUewuDG9EPIIoifqvKypJNly8taEyS2a0I/HX42sFSjAiAWATlxFMEVVJk6db6KkFzzGXl9c4Pm82hY2L3uPVnmfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":336969},"engines":{"node":">=18"},"gitHead":"f8de2ef5fbc8b15d4f22790128b837354b7b80db","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.2.15_1775506162615_0.6922783595059561","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"dev-sessions","version":"0.3.0","license":"MIT","_id":"dev-sessions@0.3.0","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"8be60830a71b7bd97c101f5e776fca3771c3da78","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.3.0.tgz","fileCount":50,"integrity":"sha512-XvKZCT5e/enuCw89FjTH48BuGMGc8sKS2AgbZoGpK1tJP1MFO30XHr6mm17y1TtUVuR3TMJvvRTO5JKZ9kGhdA==","signatures":[{"sig":"MEUCIQD1hlMlGqQ21cDkjoWw4TB8TEXFfs6EtRkLqT8NBOlFYAIgNoXdg6b9uWb21+73TNzmMppeqAxV2NYV47lEvIoSHnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383531},"engines":{"node":">=18"},"gitHead":"41a35a67a9dd6a1277433ef299305dd7b6ecc6b0","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.3.0_1781057990047_0.09946562748768573","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"dev-sessions","version":"0.3.1","license":"MIT","_id":"dev-sessions@0.3.1","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"4e1644b19c80575ddf715c66656bcc049627e02e","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.3.1.tgz","fileCount":50,"integrity":"sha512-mPLX0/kwSxMvaC9jRJKyA+nthZ4U1pgdA8BwwgTWKbKNyv6mypWfLH9lKFrVvWuoesVi7dI6fZbsepD16J8iZw==","signatures":[{"sig":"MEYCIQD5IaRqKYvVK6ZkrMnLtZxbvOEzzLDj9i8TF3mWIqv+7AIhAPbHWRRze7QY9A6rXK0+HnUtVoj+UzgfcsxapVegADmX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":394538},"engines":{"node":">=18"},"gitHead":"4f1840c0ea35a9440b802b26dbfeead2a406fd36","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.3.1_1781058971039_0.8723190132748528","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"dev-sessions","version":"0.3.2","license":"MIT","_id":"dev-sessions@0.3.2","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"7180b60084480ad1d67688a0ed1932c3ee5cd005","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.3.2.tgz","fileCount":50,"integrity":"sha512-nu8UeJyfpOLvsZy0bVKHmhSHOsTbLGzxNFtATLYniFUp3i34AhUY35rLgq8CaAE99ya2dbRhqaKxupWiOdF8/g==","signatures":[{"sig":"MEQCIGfkAFchIoYuDuzPmbufplmvmTsyIRjvUe00SrxOo4KzAiB6S4XpMparveKYaEkm8jJpAaAXhyCfxWsIe4K2tqfzhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":396154},"engines":{"node":">=18"},"gitHead":"180ef3c21560e8f2e3bf0845779f49c99609d006","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.3.2_1781059807973_0.9795549302442863","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"dev-sessions","version":"0.4.0","license":"MIT","_id":"dev-sessions@0.4.0","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"14417e208e2f530da75d935a9490c0755dbd5a75","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.4.0.tgz","fileCount":59,"integrity":"sha512-j3V9tste3EJvv0oPmz+eSqC1gDRlwrhO0xHjNQh2ipRwywxI6Vqxd/6khmVN9DyhfL3mxZTtbJbsz+RnvxBzuQ==","signatures":[{"sig":"MEQCIClRwwpCoDNv3j9pslqVn2xtX2EwRy0j18f/MPsBBLw4AiAYmLanz/kPeVDOvm4L7508UybF5+kTd1Drzdhn61gvTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":456438},"engines":{"node":">=18"},"gitHead":"936a34783b2e0c9cbed5d52eb6959f62d71840ac","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.4.0_1783127245839_0.5213783501824862","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"dev-sessions","version":"0.4.1","license":"MIT","_id":"dev-sessions@0.4.1","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"408c1242adcab676996a393180fdf74f6cbdf265","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.4.1.tgz","fileCount":59,"integrity":"sha512-brv8wZQjtTL261bhs3ct7sj5KzSPkepivhN3antGy4v3JM9WgbJOxk+5aHbrEAhUAmJ7LkPj1UsR1Zu18IcvlA==","signatures":[{"sig":"MEYCIQC9dYoZM1k/tXxcTxIgRQesyxUHeGJxr5zIa1CZjn8zCQIhALMSAROU+NLkUCFKUj6F/SYJB+2yRN2/2oMo64rHnk+O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":463478},"engines":{"node":">=18"},"gitHead":"73c1c8f511c64648de65495f05c64dc583dd6e62","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.4.1_1783127788233_0.19966744224587796","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"dev-sessions","version":"0.4.2","license":"MIT","_id":"dev-sessions@0.4.2","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"ff69d437c9e18f2abfeddc5d5ca8c9bef6e48436","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.4.2.tgz","fileCount":59,"integrity":"sha512-1bD/KhIv2fnINst5Twi1vXps+3K9fCLrs7hpOqJSetoGqZlfId2JjdMMvb6GclHgSOxSYr2+SgEtvfxv5GKtGg==","signatures":[{"sig":"MEYCIQDzpy+LLQh5VcxnppLO1IR1pDWcwiHmjn0la3YGkQCPQQIhALa+J7Kk5SXVG7Db2y5BzPQ/zdXvnhv7ZEDGRPSPHHgW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464146},"engines":{"node":">=18"},"gitHead":"da694cc1e31734f90b1e755e53ba85bebdfea58e","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.4.2_1783283339710_0.6298638132664325","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"dev-sessions","version":"0.4.3","license":"MIT","_id":"dev-sessions@0.4.3","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"0c7d7e99b38f7d9d4b7335f7ac4f73567e288fef","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.4.3.tgz","fileCount":59,"integrity":"sha512-J0tnTXFKkNCpKVPFZX0XIvKD0bCii7a7Vzv39UnmH2jdaXzjjUAvxoWGs2Rgdj4GuEfVJffPdsIjEGeeK5pUOg==","signatures":[{"sig":"MEUCIQCg+HKSttirIzwW2ap+rqbY4A5T62WW/qUqtwCJo6Z3bQIgM8K0nRu9rckFw6n62JoS9FWM5zZ/kLtkRv+BVLd0nEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":466563},"engines":{"node":">=18"},"gitHead":"5cd4c01ab3d6d08d4ef56f99ac41980723cf660e","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.4.3_1783449663110_0.7630095250760147","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"dev-sessions","version":"0.4.4","license":"MIT","_id":"dev-sessions@0.4.4","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"ba3a276dfdeb193bfeee3bd579a4b6edcb9faa91","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.4.4.tgz","fileCount":59,"integrity":"sha512-n4znzjvgZMvsgHN0c1DUwYff9DmZPDWj5VQZOi5DrCWKiJ4slQIfgyRWSxL2DDE4Jwg0TwxGAsBicTfZbB0XSQ==","signatures":[{"sig":"MEUCIASRIBhHzqkepzAK8zba9C/P3uNRfVebunu5I0VN0C3iAiEA3kELBe0JwidsmeLYqmq5LTZqO6b506b0A9im6PD2+T0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467956},"engines":{"node":">=18"},"gitHead":"abeea3cae787fbcbd2b633e3dcee2fb2968309c9","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.4.4_1783635798152_0.9316828550028264","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"dev-sessions","version":"0.5.0","license":"MIT","_id":"dev-sessions@0.5.0","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"3ddd2852a6928920551d471ba4fffe53bc4dfefc","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.5.0.tgz","fileCount":62,"integrity":"sha512-BMU79xSBLIQZjuHkUyJ6sPaLxERtesPw2CYO6Z1o+w+EbsdIqEEFwSDW/YY7bUhLnXKrlo5g8OpuVxuuJhtlBw==","signatures":[{"sig":"MEUCIQC1IE29HRM47JkqEdwL6nIvTtifokcDcQSyX4lZu+vwhwIgWtHfA35WGl5B8FUmmlzZoeYQUOkBBbZGzQ4YQlNtTdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":528644},"engines":{"node":">=18"},"gitHead":"660d2c2fdc7bd3b367df9fc4ebf717e899b6d4b1","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.5.0_1786479818181_0.9961036975460387","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"dev-sessions","version":"0.6.0","license":"MIT","_id":"dev-sessions@0.6.0","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"3d18af04bfc1ad40faa5dc7df0b91fd0981977db","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.6.0.tgz","fileCount":68,"integrity":"sha512-PhITVNj22B7AWsy2qlnmFIItKM8nbgNgi8jGPZESgTpJrU0b0V/Mi9o+QtAzhfHxB6074dO36/X+VzqIc0jXkA==","signatures":[{"sig":"MEYCIQDd8ZqrP69lBfx0BBBICSWiuClWGwECRFdi6Nq8eJuPuQIhALOB5Xu9sd81hailXbgjUAedIQD+4vUAXL7WZ/rNnASu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":604120},"engines":{"node":">=18"},"gitHead":"16f8fa5599bd36c13eb780421b2cc1b61273626b","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.6.0_1786997411833_0.46562932926391465","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"dev-sessions","version":"0.6.1","license":"MIT","_id":"dev-sessions@0.6.1","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"bin":{"dev-sessions":"dist/index.js"},"dist":{"shasum":"13d0183ef904eb3927af3de5e3705a359cdafc0e","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.6.1.tgz","fileCount":66,"integrity":"sha512-iplUl1KofgrjJTwldze8aYoD7yB5Hw9hyaJ6/fe+/Z5aPRMpQN3DhXYXMynfQ6/4Fdm8JLC+QaSvKd3h3dPW7g==","signatures":[{"sig":"MEYCIQC56l0oiQKb4qq5GjJlRjzCdXE1V1T7dxDiRwnaKxLokwIhAPpfNJQLEK5nTqruG3FvHU1FCSFhrQenSdwNAIH/e9J/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":598235},"engines":{"node":">=18"},"gitHead":"82c9b9b4065d23079a0cc5ed9e3d0172eaa056e0","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","test:integration":"vitest run tests/integration/"},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"_npmVersion":"10.9.4","description":"CLI tool to spawn and manage coding agent sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0","express":"^5.2.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/ws":"^8.18.1","typescript":"^5.8.2","@types/node":"^24.0.0","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/dev-sessions_0.6.1_1788287893500_0.4351703593992404","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"dev-sessions","version":"0.7.0","description":"CLI tool to spawn and manage coding agent sessions","license":"MIT","bin":{"dev-sessions":"dist/index.js"},"scripts":{"build":"tsc -p tsconfig.json","clean":"rm -rf dist","test":"vitest run","test:all":"vitest run","test:integration":"vitest run tests/integration/","test:watch":"vitest"},"engines":{"node":">=18"},"dependencies":{"better-sqlite3":"^11.10.0","commander":"^14.0.0","croner":"^10.0.1","express":"^5.2.1","ws":"^8.19.0"},"devDependencies":{"@types/better-sqlite3":"^9.6.0","@types/express":"^5.0.6","@types/node":"^24.0.0","@types/ws":"^8.18.1","typescript":"^5.8.2","vitest":"^3.2.4"},"_id":"dev-sessions@0.7.0","gitHead":"10f0cefbd214755f8e3c3b9a50e0be5ead451c1d","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-FBW/vqhTr3zt+u1628WpQBXqMllEEj+NFuLk6whq6hbXA8mdp2eoHrNtFi0mo0FkeUr+nYz+7/BwA0LEioqI6g==","shasum":"e17203db4e5e0107da12f3b347a667c8290925b6","tarball":"https://registry.npmjs.org/dev-sessions/-/dev-sessions-0.7.0.tgz","fileCount":75,"unpackedSize":839233,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB05qqlJgSfVSZzgxJsBLTbWivYAz49e5UIN7A5J6DtrAiBPSxVmdMnViOyYtL8XCnLLjomvzQ5jfhw7QmPs6jsawg=="}]},"_npmUser":{"name":"andrewting19","email":"andrewtingnyc@gmail.com"},"directories":{},"maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dev-sessions_0.7.0_1788460184722_0.9291061376043177"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-22T16:12:10.684Z","modified":"2026-09-03T18:29:45.014Z","0.1.0":"2026-02-22T16:12:10.830Z","0.1.1":"2026-02-22T16:29:13.736Z","0.2.0":"2026-02-22T17:32:45.157Z","0.2.1":"2026-02-22T23:47:02.624Z","0.2.2":"2026-02-23T02:12:09.570Z","0.2.3":"2026-02-24T03:07:23.567Z","0.2.4":"2026-02-24T20:34:40.557Z","0.2.5":"2026-02-26T19:18:14.847Z","0.2.6":"2026-02-26T19:38:27.494Z","0.2.7":"2026-03-03T15:51:06.739Z","0.2.8":"2026-03-03T15:59:30.985Z","0.2.9":"2026-03-03T16:12:34.698Z","0.2.10":"2026-03-03T16:12:53.377Z","0.2.11":"2026-03-22T21:04:14.602Z","0.2.12":"2026-03-23T20:19:07.885Z","0.2.13":"2026-03-25T18:44:45.418Z","0.2.14":"2026-03-27T04:23:35.391Z","0.2.15":"2026-04-06T20:09:22.805Z","0.3.0":"2026-06-10T02:19:50.186Z","0.3.1":"2026-06-10T02:36:11.170Z","0.3.2":"2026-06-10T02:50:08.135Z","0.4.0":"2026-07-04T01:07:25.975Z","0.4.1":"2026-07-04T01:16:28.406Z","0.4.2":"2026-07-05T20:28:59.853Z","0.4.3":"2026-07-07T18:41:03.254Z","0.4.4":"2026-07-09T22:23:18.271Z","0.5.0":"2026-08-11T20:23:38.328Z","0.6.0":"2026-08-17T20:10:11.975Z","0.6.1":"2026-09-01T18:38:13.681Z","0.7.0":"2026-09-03T18:29:44.882Z"},"license":"MIT","description":"CLI tool to spawn and manage coding agent sessions","maintainers":[{"name":"andrewting19","email":"andrewtingnyc@gmail.com"}],"readme":"# dev-sessions\n\nA CLI tool for coding agents to spawn, manage, and communicate with other coding agent sessions. Built for agent-to-agent delegation — no MCP overhead, just a CLI that agents call via Bash.\n\n## Why\n\nCoding agents (Claude Code, Codex, and Grok Build) are increasingly capable of orchestrating parallel work. But the tooling for agent-to-agent communication is either over-engineered (MCP servers, HTTP gateways, SSH tunnels) or too primitive (raw tmux commands).\n\n`dev-sessions` provides a clean CLI interface that lets agents:\n- **Spawn** new coding agent sessions (Claude Code, Codex, or Grok Build)\n- **Send** tasks and messages to those sessions\n- **Wait** for turns to complete (transcript-aware, not terminal scraping)\n- **Read** structured responses (clean assistant text, not ANSI noise)\n- **Check status** (`idle`, `working`, `waiting_for_input`)\n- **Queue** ordered, durable work for busy sessions\n- **Schedule** recurring work on the machine that runs the session\n- **Resume** any retained backend task or thread by its task ID\n\n## Installation\n\n```bash\nnpm install -g dev-sessions\n```\n\nFor Grok sessions, install the official [Grok Build CLI](https://github.com/xai-org/grok-build), run `grok login`, and use Grok Build 1.0.3 or later.\n\nOr clone and link for local development:\n```bash\ngit clone https://github.com/andrewting19/dev-sessions\ncd dev-sessions\nnpm install && npm run build && npm link\n```\n\n### Host Setup (one-time)\n\nInstall the gateway as a system daemon so it auto-starts on login:\n```bash\ndev-sessions gateway install\n```\n\nOn macOS, grant Full Disk Access to the node binary printed by that command (System Settings → Privacy & Security → Full Disk Access). This is needed if your repos live in ~/Documents or other protected paths.\n\nInstall skills for Claude and/or Codex:\n```bash\ndev-sessions install-skill --global\n```\n\n---\n\n## Usage\n\n```bash\n# Create a session (defaults: --cli claude, --mode native)\ndev-sessions create --description \"refactor auth module\"\n# => fizz-top\n\n# Send a task (returns immediately — non-blocking)\ndev-sessions send fizz-top \"Implement JWT auth. See AUTH-SPEC.md for details.\"\ndev-sessions send fizz-top --file BRIEFING.md\n\n# Wait for the agent to finish its turn\ndev-sessions wait fizz-top --timeout 300\n\n# Get the agent's response (clean text, not terminal noise)\ndev-sessions last-message fizz-top\n\n# Check what's happening\ndev-sessions status fizz-top    # idle | working | waiting_for_input\ndev-sessions list               # all active sessions\n\n# Synchronous delegation (one-liner)\nsid=$(dev-sessions create -q) && dev-sessions send $sid \"run tests and fix failures\" && dev-sessions wait $sid && dev-sessions last-message $sid\n\n# Fan-out\ns1=$(dev-sessions create -q --description \"frontend\")\ns2=$(dev-sessions create -q --description \"backend\")\ndev-sessions send $s1 \"build React form per SPEC.md\"\ndev-sessions send $s2 \"add /api/users endpoint per SPEC.md\"\ndev-sessions wait $s1 & dev-sessions wait $s2 & wait\ndev-sessions last-message $s1\ndev-sessions last-message $s2\n\n# One-shot round trip (send + wait + print reply)\ndev-sessions ask fizz-top \"Summarize the failing tests.\" --timeout 120\n\n# Codex session (persistent app-server, conversation continuity)\nsid=$(dev-sessions create --cli codex -q)\ndev-sessions send $sid \"hello\"\ndev-sessions send $sid \"what did I just say?\"   # has context from first message\ndev-sessions last-message $sid                   # \"You said hello\"\n\n# Grok Build session (persistent ACP server; grok-4.6 is the current default)\ngid=$(dev-sessions create --cli grok --model grok-4.6 -q)\ndev-sessions ask $gid \"Reply with exactly GROK_OK\" --timeout 120\n\n# Autonomous goal (codex only) — the agent keeps working across turns until done\ndev-sessions goal $sid \"Make all unit tests pass, then mark the goal complete.\" --budget 200000\ndev-sessions goal $sid -f objective.md           # long/multiline objectives from a file (- for stdin)\ndev-sessions wait $sid --goal --timeout 1800     # blocks until complete/paused/blocked/limited\ndev-sessions goal $sid --json                    # inspect objective, status, token usage\n\n# Clean up\ndev-sessions kill fizz-top\n```\n\n### Durable Messages\n\n`send` writes the message to `~/.dev-sessions/state.sqlite` before it tries to\ndeliver it. A busy session keeps the message in `waiting`. The host gateway\ndelivers it after the current turn. Messages for one session use FIFO order.\n\n```bash\n# A retry with the same key returns the same message record.\ndev-sessions send mayor-mid \"Review the open cases.\" \\\n  --from warden-jg --idempotency-key case-scan-2026-09-02 --json\n\ndev-sessions messages mayor-mid --status waiting,delivered --json\ndev-sessions message show msg_<id>\ndev-sessions message wait msg_<id> --timeout 600\ndev-sessions message cancel msg_<id>\ndev-sessions message retry msg_<id>\n\n# Send a correlated callback to the source session.\ndev-sessions message reply msg_<id> \"The review is complete.\"\n```\n\nMessage states are `waiting`, `dispatching`, `delivered`, `completed`,\n`failed`, `cancelled`, and `delivery_uncertain`. A worker does not automatically\nretry an uncertain delivery because that could send the same work twice. Inspect\nit, then use `message retry` or `message cancel`.\n\n### Resume by Task ID\n\nThe backend task or thread is the durable source of conversation history. There\nis no persistent/disposable session type. An active champion ID is only a registry\npointer to that backend task.\n\n```bash\ndev-sessions inspect mayor-mid                 # read internalId (the task ID)\ndev-sessions kill mayor-mid\ndev-sessions resume <task-id> -q               # metadata is kept after kill/cleanup\n\n# For a task that is not in the local retired-task index:\ndev-sessions resume <task-id> --cli codex --path /abs/path/to/repo\ndev-sessions resume <task-id> --host buildbox\n```\n\nAutomatic cleanup retires idle active-session records after 48 hours. It does\nnot delete backend transcripts or threads. Set `DEV_SESSIONS_AUTO_CLEANUP_HOURS`\nto a different number. Set it to `0` to disable automatic cleanup.\nSet `DEV_SESSIONS_STATE_PATH` only when a separate automation database is needed.\nSet `DEV_SESSIONS_STORE_PATH` only when a separate active-session registry is\nneeded, such as for an isolated E2E test.\nSet `DEV_SESSIONS_CODEX_DAEMON_STATE_PATH` and\n`DEV_SESSIONS_CODEX_DAEMON_LOG_PATH` only when an isolated Codex daemon is\nneeded for an E2E test.\n\n### Schedules\n\nInstall the gateway daemon on each host that must run work while the controlling\nmachine is offline. The gateway checks the durable queue and schedules on that\nhost. SQLite claims prevent two gateway or CLI processes from starting the same\nrun.\n\nOn Linux, installation enables systemd user lingering so the gateway starts\nafter a machine restart without an interactive login. If the host policy blocks\nthis, the installer gives the required `loginctl` command and stops.\n\n```bash\ndev-sessions gateway install\n\n# Return to the same backend task on each run. Automatic cleanup can retire its\n# active ID; the scheduler resumes the saved task ID when the next run starts.\ndev-sessions schedule create --name \"Mayor wake\" --cron \"0 * * * *\" \\\n  --timezone America/New_York --session mayor-mid \\\n  --message \"Review waiting work and send callbacks.\"\n\n# Create a separate backend task for every run.\ndev-sessions schedule create --name \"nightly audit\" --cron \"0 2 * * *\" \\\n  --timezone America/New_York --new-session --cli codex \\\n  --path /srv/project --message \"Run the nightly audit.\"\n\n# Store and run the schedule on a remote host.\ndev-sessions schedule create --host buildbox --name \"remote audit\" \\\n  --cron \"0 2 * * *\" --new-session --cli codex --path /srv/project \\\n  --message \"Run the audit.\"\n\ndev-sessions schedules --json\ndev-sessions schedules --host buildbox --json\ndev-sessions schedule show sch_<id>\ndev-sessions schedule pause sch_<id>\ndev-sessions schedule resume sch_<id>\ndev-sessions schedule run sch_<id>\ndev-sessions runs sch_<id> --json\ndev-sessions schedule delete sch_<id>\n```\n\nThe default downtime policy runs only the latest eligible occurrence. It does\nnot replay the full backlog. Use `--misfire skip` to record missed occurrences\nwithout running them. `--max-lateness` rejects obsolete work. The default overlap\npolicy is `skip`; use `--overlap queue` to run one occurrence after the prior run.\n\n---\n\n## Architecture\n\n### Claude Code Sessions\n- **Backend**: tmux (human-attachable via `tmux attach -t dev-<id>`)\n- **Session ID**: Pre-assigned UUID via `claude --session-id <uuid>` — transcript path is known immediately\n- **Transcript**: `~/.claude/projects/<sanitized-cwd>/<uuid>.jsonl`\n  - Sanitized CWD: path with `/` replaced by `-`, e.g. `-Users-andrew-Documents-git-repos-myproject`\n- **Message delivery**: `tmux send-keys` (base64 encoded for safety)\n- **Turn detection**: Watches for `system` entries in JSONL (definitive turn-completion signal)\n- **Status inference**: last entry is `assistant` → idle; `human/user` → working; tool call to `AskUserQuestion` → waiting_for_input\n\n### Codex Sessions\n- **Backend**: Persistent `codex app-server` daemon (JSON-RPC 2.0 over WebSocket)\n- **Session ID**: Thread ID from `thread/start` response\n- **Conversation continuity**: Multiple sends share the same thread — full history preserved\n- **Message delivery**: `turn/start` JSON-RPC call (non-blocking — returns after `turn/started`)\n- **Turn detection**: `turn/completed` notification; the gateway also projects global `thread/status/changed` events into the session store\n- **Message history**: Fetched via `thread/read` with `includeTurns: true` — persisted across process restarts\n- **Turn status**: Checked on demand via `thread/resume`; while the gateway runs, event projection keeps stored status current without a later command\n- **Session liveness**: Verified via `thread/list` — checks specific thread ID exists, not just daemon PID\n- **Daemon lifecycle**: Auto-started on first `create --cli codex`, auto-stopped when last Codex session is killed\n\nThe gateway owns one long-lived Codex status projector. It does not resume all stored\nthreads. On startup or reconnect, it uses status-only `thread/read` calls for stored\nactive records and currently loaded tracked threads. It also ignores high-volume item\ndeltas. Each host needs its own gateway for event-driven status. `GET /health` shows\nwhether the local projector is waiting, connected, reconnecting, or stopped.\n\n### Codex App-Server Protocol\n\n```\ninitialize → initialized → thread/start → turn/start → [stream notifications] → turn/started → ... → turn/completed\n```\n\nKey methods: `thread/start`, `turn/start`, `turn/interrupt`, `thread/list`, `thread/resume`, `thread/read`, `thread/goal/set`, `thread/goal/get`, `thread/goal/clear`\nKey notifications: `turn/started`, `item/agentMessage/delta`, `turn/completed`, `thread/status/changed`, `error`, `thread/goal/updated`\n\n**`ThreadStatus` JSON shape** — important, easy to get wrong. The parser supports all\nformats that have shipped:\n- Plain strings: `\"idle\"`, `\"notLoaded\"`, `\"systemError\"`\n- 0.104.0 tagged variant: `{ \"active\": { \"activeFlags\": [...] } }`\n- 0.105.0+ tagged objects (current): `{ \"type\": \"idle\" }`, `{ \"type\": \"active\", \"activeFlags\": [] }`, `{ \"type\": \"systemError\" }`\n\n**Goals** (`/goal` in the Codex TUI, stable since codex 0.133.0): a persisted\nper-thread objective. While a goal is `active` the app-server itself keeps starting\ncontinuation turns until the model marks the goal `complete` or `blocked` (or a\ntoken budget/usage limit lands it in `budgetLimited`/`usageLimited`). The model gets\n`get_goal`/`create_goal`/`update_goal` tools; clients control pause/resume/budget via\n`thread/goal/set`. dev-sessions surfaces this as the `goal` command and `wait --goal`.\n\n**Model selection**: no model is sent unless explicitly requested (`create --model`).\nCodex resolves its own configured default, which tracks model deprecations across\nreleases — hardcoding a default here is how sessions silently break (a rejected model\nyields a turn recorded as `completed` with no output and a `systemError` thread).\n\n### Grok Build Sessions\n- **Backend**: Persistent `grok agent serve` daemon (Agent Client Protocol over authenticated WebSocket)\n- **Session ID**: Grok session ID from the standard ACP `session/new` response\n- **Conversation continuity**: Follow-up sends use `session/load` on the same durable Grok session\n- **Message delivery**: `session/prompt` with a client-minted prompt ID; `send` returns after Grok accepts the prompt or queue entry\n- **Turn detection**: Durable `turn_completed` replay for the exact prompt ID, with the live roster as a compatibility fallback\n- **Message history**: Rebuilt from ACP `session/load` replay, including user and assistant message chunks\n- **Turn status**: `x.ai/sessions/list` maps Grok `working`, `idle`, and `needs_input` to the common status values\n- **Model selection**: Grok resolves its configured default unless `create --model` is passed; `grok-4.6` is supported directly\n- **Permissions**: Native sessions start the Grok agent server with automatic approval enabled\n- **Daemon lifecycle**: Private loopback server with a random secret; state and logs use owner-only permissions and stop after the last local Grok session is killed\n\nThe implementation uses Grok Build's public ACP server. It does not use tmux, terminal input injection, output scraping, or Grok's plain headless command.\n\n### Champion IDs\n\nSessions get human-readable IDs like `fizz-top`, `riven-jg` (League of Legends champion + role). These map to internal UUIDs/thread IDs but are easier to type and remember.\n\n### Session Store\n\nPersisted at `~/.dev-sessions/sessions.json`. All mutating operations use file-based locking (`mkdir` as atomic primitive) to serialize concurrent access.\n\nDurable messages, schedules, run history, and retired-task resume metadata are in\n`~/.dev-sessions/state.sqlite`. The database uses WAL mode and owner-only file\npermissions.\n\n---\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `create [options]` | Spawn a new agent session (`--cli claude|codex|grok`, `--mode native|docker`, `--model <m>` Codex/Grok model override, `--host <ssh-target>` remote host, `--json` full record, `-q` quiet) |\n| `resume <task-id>` | Resume a backend task or thread (`--host`, or `--cli` and `--path` for an unindexed task) |\n| `ask <id> <msg>` | One-shot round trip: send, wait for the reply, print it (`--file`, `--timeout`) |\n| `send <id> <msg>` | Durably queue a message (`--file`, `--from`, `--reply-to`, `--idempotency-key`, `--json`) |\n| `messages [id]` | List durable messages (`--status`, `--host`, `--json`) |\n| `message show\\|wait\\|cancel\\|retry\\|reply` | Inspect or control one durable message |\n| `schedule create\\|show\\|pause\\|resume\\|delete\\|run` | Create or control scheduled work |\n| `schedules` | List schedules (`--host`, `--json`) |\n| `runs [schedule-id]` | List run history (`--host`, `--json`) |\n| `run <run-id>` | Show one schedule run and its result |\n| `wait <id>` | Block until current turn completes (`--timeout` seconds, `--interval` poll interval); `--goal` waits until the goal reaches a terminal state; `--next-turn` returns at the next turn boundary (codex only, includes goal continuation turns) |\n| `goal <id> [objective]` | Codex only: set/show an autonomous goal (`--budget` tokens, `--pause`, `--resume`, `--clear`, `--json`) |\n| `last-message <id>` | Get last N assistant messages (`-n` count, `--json` for a lossless block array) |\n| `status <id>` | Get session status: `idle`, `working`, or `waiting_for_input` |\n| `list` | List all active sessions with their host (`--json` for machine-readable output) |\n| `kill <id>` | Retire the active pointer and stop its live runtime when required; keep the backend task for `resume` (`--all` and `--older-than` are supported) |\n| `gateway` | Start the Docker relay gateway HTTP server (`--port`) |\n| `gateway install` | Install gateway as system daemon (launchd on macOS, systemd on Linux) |\n| `gateway uninstall` | Remove gateway daemon |\n| `gateway status` | Check if gateway daemon is running and on which port |\n| `install-skill` | Install all skills (`--global\\|--local`, `--claude\\|--codex`) |\n\n## Modes\n\n| Mode | Flag | Description |\n|------|------|-------------|\n| `native` | `--mode native` | Runs with automatic tool approval (default) |\n| `docker` | `--mode docker` | Runs via `clauded` Docker wrapper (Claude Code only) |\n\n## Session Lifecycle\n\n```\ncreate  →  send  →  [wait / poll status]  →  last-message  →  kill\n                ↑                                    |\n                └────────────────────────────────────┘\n                        (send follow-up)\n```\n\n`send` is non-blocking. It returns the durable queue receipt after an immediate\ndelivery attempt. If the session is busy, the message stays queued. Use `ask` or\n`message wait` to block for the exact message result.\n\n---\n\n## Remote Hosts (SSH)\n\nSessions can live on other machines. Create with `--host` and every other\ncommand routes there automatically — the calling convention doesn't change:\n\n```bash\n# buildbox is an ~/.ssh/config alias (any ssh target works, e.g. user@10.0.0.5)\nsid=$(dev-sessions create -q --host buildbox --path /home/andrew/repo --cli codex)\n\ndev-sessions send $sid --file BRIEFING.md    # file content streams over ssh stdin\ndev-sessions goal $sid \"Make the tests pass, then mark the goal complete.\"\ndev-sessions wait $sid --goal --timeout 1800\ndev-sessions last-message $sid\ndev-sessions kill $sid\n```\n\n**How it works:** the local CLI relays each command as\n`ssh <host> dev-sessions <cmd> --json` and passes results through. The local\nregistry (`~/.dev-sessions/sessions.json`) records which host each session ID\nlives on and pre-allocates IDs, so they stay unique across hosts. `list` shows\na HOST column, merges live remote state, and prunes sessions that died remotely.\n\n**Requirements:** dev-sessions installed on the remote (same minor version — the\nCLI warns on mismatch at create time), key-based ssh auth (`BatchMode=yes`; no\nprompts, no secrets in argv — auth is entirely ssh config's business). Remote\ncommands run via `bash -lc` so login-shell PATH additions (npm globals, nvm)\napply; if the binary still isn't found, set `DEV_SESSIONS_REMOTE_BIN` to its\nabsolute path before `create --host` (it is remembered for that host, even after\nsession cleanup, and reused for message, schedule, and run commands).\n\n**Durability:** the session, message worker, schedules, and any `/goal` driver run\nentirely on the remote host. Install `dev-sessions gateway` there as a system\ndaemon. A dropped connection or closed laptop does not stop that work. Use\n`messages --host`, `schedules --host`, and `runs --host` to inspect host state.\n\n**Exit codes:** preserved exactly (`wait` exits 124 on timeout). Exit **255**\nmeans the SSH transport failed — distinct from \"the session failed\" — so\norchestrators can retry network errors specifically. Connections are multiplexed\n(`ControlMaster` with 60s persistence) to keep per-command latency low; first\ncontact with an unknown host is accepted automatically (`accept-new`), changed\nhost keys still fail hard.\n\n---\n\n## Docker Integration\n\n### Running FROM inside a container\n\nWhen running inside a Docker container (detected via `DEV_SESSIONS_SANDBOX=1`), the CLI automatically routes all commands through an HTTP gateway relay on the host.\n\n**Setup:**\n1. On the host: `dev-sessions gateway install` (or manually `dev-sessions gateway --port 6767`)\n2. Inside Docker, set `DEV_SESSIONS_GATEWAY_URL=http://host.docker.internal:6767`\n3. Set `HOST_PATH` to the host-side project path (e.g. `/Users/you/project`)\n\n**Path translation:** Container paths are automatically mapped to host paths. When an agent inside Docker passes `--path /workspace/subdir`, it's translated to `HOST_PATH/subdir` before being sent to the gateway. This means agents can use paths as they see them locally without knowing the host filesystem layout.\n\n| Environment Variable | Default | Purpose |\n|---|---|---|\n| `DEV_SESSIONS_SANDBOX` | — | Set to `1` to enable gateway mode |\n| `HOST_PATH` | — | Host-side path that `/workspace` maps to |\n| `CONTAINER_WORKSPACE` | `/workspace` | Container mount point (override if using a different mount path) |\n| `DEV_SESSIONS_GATEWAY_URL` | `http://host.docker.internal:6767` | Gateway endpoint |\n\nThe gateway binds to `127.0.0.1` only — not exposed beyond loopback.\n\n### `--mode docker` (spawning Claude in a container)\n\nSpawns Claude inside Docker via a `clauded` binary on the host. See [claude-ting](https://github.com/andrewting19/claude-ting) for a reference Docker wrapper.\n\n> **Note:** If `clauded` is defined as a shell function in `.zshrc`, create a wrapper script so tmux (bash) can find it:\n> ```bash\n> #!/bin/zsh\n> source ~/.zshrc 2>/dev/null\n> claude-docker \"$@\"\n> ```\n> at `~/.local/bin/clauded`.\n\n---\n\n## Known Limitations\n\n- **Codex ignores `--mode`**: Always runs with `approvalPolicy: never` / full access regardless of mode flag.\n- **Grok ignores `--mode`**: Always uses the native ACP server with automatic approval.\n- **`docker` mode is Claude-only**: Codex/Grok + Docker is not implemented.\n- **Session store uses file locking**: Concurrent operations are serialized via lockfile. A crashed process holding the lock is auto-recovered after 30 seconds.\n- **Gateway port conflict**: Default port 6767 can conflict with Docker. Use `DEV_SESSIONS_GATEWAY_PORT` to override.\n- **No `respond` command**: No structured way to respond to `waiting_for_input` sessions. Only matters for non-native modes.\n- **Claude permission prompts undetectable**: TUI-level prompts aren't written to JSONL — `status` reports `working` instead of `waiting_for_input`. Only affects `native` mode.\n\n---\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test        # unit + integration tests\nnpm link        # link global dev-sessions to this repo's dist/\n```\n\nSee `CLAUDE.md` for developer workflow standards and `TODO.md` for current project state and remaining work.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}