{"_id":"@agent-session-broker/admin","_rev":"25-ce8b7d0649221a1e6345037c7cda7105","name":"@agent-session-broker/admin","dist-tags":{"latest":"0.1.29"},"versions":{"0.1.0":{"name":"@agent-session-broker/admin","version":"0.1.0","license":"MIT","_id":"@agent-session-broker/admin@0.1.0","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"9589a603820fb76b328c75cc92a88eb7c635e589","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.0.tgz","fileCount":84,"integrity":"sha512-BlrfbCriGp7wkqJo30n+LNfg45euJt2CFAHTUIu/CxwPzOM0YHu1+u0D/6mbyk2SuX/PePdW5MfdyXuDC8BI9w==","signatures":[{"sig":"MEUCIF0nhbQHDCDxc8FTTfWzy7sOr910QW2Eza5AVACeMjJ/AiEAk3RxlXxcDacR6P7WbqGR35Uqa5/+adhPPtRQmYILov0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1153147},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"a1c110ea842a5367006dcba58ba5560e06dfe0a6","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.0_1778740422830_0.598566842314834","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agent-session-broker/admin","version":"0.1.1","license":"MIT","_id":"@agent-session-broker/admin@0.1.1","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"bfdac012724b1dea745373a5f9c9d71b3e651feb","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.1.tgz","fileCount":84,"integrity":"sha512-V5kg+i1nVNX4K8Cht4zOcLlDjPF7+/2InDw14jMME/Tj6B0BfJDQVdMjbhwxoHmsgy/CKfWkS0CiLapLeK2OfQ==","signatures":[{"sig":"MEUCIEk1m0ZL+BFDLdkKi02Io6vnamuJ2okGAB+uEcR2g9CDAiEA2KiFIlMT4SymBz6+Wi4ZH/fRqKRNw/YJIO58g1PCgEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1153552},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"f1033c5867719d858178ca2cafb3ee6d71d36810","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.1_1778741282468_0.3727294890902326","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agent-session-broker/admin","version":"0.1.2","license":"MIT","_id":"@agent-session-broker/admin@0.1.2","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"63dcfbfb302fc14c64e3688dd53b5ea98dc398d7","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.2.tgz","fileCount":85,"integrity":"sha512-4TvEzkjgw9GVXP73dSd1JYKr3Zk90xOzu/n9Vp9PJ859pl3zUQIBdO3mnW8jTP3Oj9lrWihQbT4zG64/XF9T5g==","signatures":[{"sig":"MEUCIQDTwtBjNJkAzpR0HrP3ni3rmlmniQiKflI3A+ye5C/uKgIgfnY9P7SCFAQfWLzM47qtcjjE7PkEHEpYDxqUN51/eLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1169909},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"bbe7ef8683c6a91769ecebcd0dede8000ce5093e","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.2_1778741812995_0.5018015726915315","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agent-session-broker/admin","version":"0.1.3","license":"MIT","_id":"@agent-session-broker/admin@0.1.3","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"85f01be7f0b9f5514c8e3f8d50f7d701c5e67d80","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.3.tgz","fileCount":85,"integrity":"sha512-JpcGw+I9zt7mfcenvpZJcYeYMAl/TkcP8e4/dS/IIGQ9F6jyt+2040Fee79HtTIS2Kzfwf7CP/vzDLNNHsu3aQ==","signatures":[{"sig":"MEQCIB6WYw/Lc3i4/wav0nTKQLQdKg/DhS51S/FSUXsVXpmZAiAmwTA8N2m/pla/5Qpc4MeUqU+0yBU2BD4nUTKHNENZyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1173403},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"3322cde14e945ca3cfee5897606e9a60bf8000ce","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.3_1778746860133_0.13120520488942145","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@agent-session-broker/admin","version":"0.1.4","license":"MIT","_id":"@agent-session-broker/admin@0.1.4","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"13f02efb7a13a7f21015834822a90d344397ee17","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.4.tgz","fileCount":85,"integrity":"sha512-0+Ui5YicTkNOKa3LZOSnqK6KD4Iv5vVgXNsWEemhTpecZkMi7ZpYAQScGq3kZeCq8PjU3nik9pj+M3g0fctbaQ==","signatures":[{"sig":"MEQCIF0gjLiIXWbOLjTHPKP0WUmcfjQWqoYz3zZGny0KqItGAiBqJEDqQjP/f8MeaBih3LRTH5II5srBaPpTQ+dczyqEFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1195607},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"2ffdc50599fe183374224bafad2e1f29970dce2e","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.4_1778753748622_0.5106755529592639","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@agent-session-broker/admin","version":"0.1.5","license":"MIT","_id":"@agent-session-broker/admin@0.1.5","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"c8a8ee374b6ee48ccb2c5f384992f411852e7bcf","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.5.tgz","fileCount":85,"integrity":"sha512-U06iVONJ1QRvqzGcoGaSn7ug7Li7F8GcVFTth/9bq9o9L6dirxlUPgjerXiQIc9nnQVLbSrPsOt7W1i/DBoZwQ==","signatures":[{"sig":"MEQCIH01hB35s/iPoWLUPdVf0VS4qevvrpJCEjcD45pRcfmKAiBnXlwNsYmTkmI1F91PfBY6H9NIpD/v1inIEFfF+bDdow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1197198},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"73c71905498def68851218908ac84ac6d75c09d0","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.5_1778755272936_0.771227821366286","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@agent-session-broker/admin","version":"0.1.6","license":"MIT","_id":"@agent-session-broker/admin@0.1.6","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"88aad3c66bd0cbb99d676dc00e0074c64a38f72d","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.6.tgz","fileCount":85,"integrity":"sha512-5OLMR7k5keyE86EPysODjqzATKmEr0oJkdOH3Uo/wVitxnterlfBE2hG1SnzbPsnhKgxJVPU+52sXVMp5vAwnA==","signatures":[{"sig":"MEQCIAUbHwwj15g8wUsciLdj1kCdZCHGfO1fy6EVjByntpS8AiAUBBR90IgbLb6yTAA0HL0twvDaPDYHqpYV/Cb+Z/pdNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1195027},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"8f957057fd71917cede4db7e34da892331ef65da","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.6_1778755739702_0.5337149104214514","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@agent-session-broker/admin","version":"0.1.7","license":"MIT","_id":"@agent-session-broker/admin@0.1.7","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"c34f6307f2883b7f4e318b91ab72bf2a3efdee25","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.7.tgz","fileCount":85,"integrity":"sha512-o8QeD0QUuIynJdeftte1ltjZpchFj0fImDBN0Awc3vwnNkmy/5kzGSsVa7EthsNp6pcM1l5O1og+9WIFtGB76g==","signatures":[{"sig":"MEUCIQDhZJkYgvANubzounCxnmyiPdAGfMAioy2txd/gMb4InQIgKlgvdwHl5vUdosgJOpHFI+QExbvYWm0sJceER4gIHh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1195393},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"03ea7e48e420eb06659534fcad30102b59f561ab","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.7_1778758833276_0.37865600029818514","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@agent-session-broker/admin","version":"0.1.8","license":"MIT","_id":"@agent-session-broker/admin@0.1.8","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"5563a8fef01861edaec3d54780b4aa2230449b34","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.8.tgz","fileCount":85,"integrity":"sha512-n692zJSQehsZeFa1Sit0a2yuS5AiakjqfqCkPVFsBVfzijE/+HpAV3K4ATgXAgeANnF64QL/0Kt/i3UP0pbNnA==","signatures":[{"sig":"MEUCIAJlgM+LJXPkQdXRXbzpdaN+5xjy0RIb9hXs49gE67mUAiEArnrFJ8ASVZ7yVskOQzxHuGZW0ia9/4Nq+DeVlcGqT+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1198686},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"641891896fbed050daa52f915b70db8172cb493d","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.8_1778759553346_0.19546558585234863","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@agent-session-broker/admin","version":"0.1.10","license":"MIT","_id":"@agent-session-broker/admin@0.1.10","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"8f16670f1637334f17e88ee8fb2d818e9336a770","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.10.tgz","fileCount":85,"integrity":"sha512-EcNGbSKEC2nDtJRhQk03MZqGucWlWGTG3h9T8YSWIsQaIFouQDsm0bu8Zp7HsWPzcCqGq7N5HHYFkYpW1XgAvw==","signatures":[{"sig":"MEUCIQDWhfhoM52GW0QVyJx6G5q//42TFwCU/tWzXhMAo5ZDhAIgH7UQTBNDADBCZ1hW0EOCItQNKkFikmEXzDaPkOy8VVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1202062},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"5b2acc0dcdfce6e01a13a667dd2a357299fa1e4d","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.10_1778761072444_0.1035906255929342","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@agent-session-broker/admin","version":"0.1.11","license":"MIT","_id":"@agent-session-broker/admin@0.1.11","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"192e975c5985c5166851353f8f2f1474384d4d0f","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.11.tgz","fileCount":85,"integrity":"sha512-NLIJNZDpJvIXYBrauuARgCeBJuB9VR8+IMO7UYYDNrCNPnO0g3Vfdavd9OJcgOaAQ5l23S1jcZWbQGrlZg922Q==","signatures":[{"sig":"MEYCIQD5+MBjmOMiEa+MP8zxj7KOk0nLkxf9gTf8texK6CAO2gIhAPPkToWxLYznD1Jvnx1X4t7YprR4i7xThN5aKZn4dzas","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1206104},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"fe928ccc5cfd3dbb3dc0a6d51e04f1f0f2109e14","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.11_1778763304799_0.17688291610533025","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@agent-session-broker/admin","version":"0.1.12","license":"MIT","_id":"@agent-session-broker/admin@0.1.12","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"657607fdd2292058d6f23d05f319c44b7fcd276e","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.12.tgz","fileCount":89,"integrity":"sha512-9EdW4ovntXWmj6IIE5RDy2O6zAB+hfWfoihMheNxRo0gfMxq5vhaDz3ijz5g12aAlUti7QSjcbnyuN4gcdJ5vw==","signatures":[{"sig":"MEUCIQDD8bwcJgIRwiebuV1Hbl+j8ws8r8RTr0PXfk2Qn+W9/AIgO/Zm7zTaHmisah1dEHiq/4j6NaAd0YaFe5/FDcB1mFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1263500},"type":"module","engines":{"node":">=22.5.0"},"_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"11.4.2","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.12_1778786733017_0.6186465135914314","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@agent-session-broker/admin","version":"0.1.13","license":"MIT","_id":"@agent-session-broker/admin@0.1.13","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"99811eb0d5be8c4f040c7b1b936d9705bd4d99f4","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.13.tgz","fileCount":86,"integrity":"sha512-NY7JAEGHk4Eud9wht9L2+1oqbqkGgQHgXHykwxPJRFswuk0uBFF75Vm0UHFCRiGivJKhzTN5hn1wqPzpnL/v5w==","signatures":[{"sig":"MEYCIQDau2MHRLnAEihs3BBQBldvQ9f8w55DoLlzoWXM1KUVqgIhANIYH+p1ljp/Ni98ClbEsZ/yT1H9QpT28KcLrHWHeJ2q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1227042},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"f46d31ccf71ae3ed34a2f8d37b7ac2efda62b4d2","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.13_1778787292494_0.8390207924336759","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@agent-session-broker/admin","version":"0.1.14","license":"MIT","_id":"@agent-session-broker/admin@0.1.14","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"d0cdc9a0802cfeb1bb71b2a10235a20f58e8d04b","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.14.tgz","fileCount":86,"integrity":"sha512-J4144byjwBOxyw+XUQpRDnrzbrru3yLn578FQHg5u3WBDtgUaOSbcUmz9nzsXoRutLIidGoTi5diF2T/OH76Rw==","signatures":[{"sig":"MEYCIQCI2lQJ+a8bYYJsUei0929sH05n8It57NyMlrW5FMF1TgIhAP1pjn0ItlEF74CMXsp150rQ3WBEn62i70prHbzyfawF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1231985},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"3dbb5aa3ae47beece9c5657f3b6f78414c88ad0f","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.14_1778789454783_0.09607928321156045","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@agent-session-broker/admin","version":"0.1.15","license":"MIT","_id":"@agent-session-broker/admin@0.1.15","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"669a098dd7c9a199fac341b1b470c5730ee07a9b","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.15.tgz","fileCount":86,"integrity":"sha512-WGfB0QF9KacF052lGLzdK4Ocg/D2ZneHWhyp0s0FZRu0m03KDeGAh+lLGd+feUFrM36Fp0l7bWSmdjAK0grsCw==","signatures":[{"sig":"MEYCIQD07q6BtE1zfS1DdU1l9X1rJoFWDufxOyiC32irqhgrEgIhAJRno22io9guRwrGSugA0PsROBoi+dgS59Aj29TgbjBu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1231983},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"01d0573a96d1ac74d8c045d537fcad2b07e06042","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.15_1778817624281_0.6704024175094936","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@agent-session-broker/admin","version":"0.1.16","license":"MIT","_id":"@agent-session-broker/admin@0.1.16","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"f29dd2233e93e05c0241be0c0422615ca6cc25c1","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.16.tgz","fileCount":86,"integrity":"sha512-FiSMXb5mk+fkQx5CNsjuULrRzjCyxUXwCObMxQulVO8bQmDs4tKI0W9WCrvmHGEEazbq5B8pqi9M2HzI0/01dg==","signatures":[{"sig":"MEQCIGbRq0DTxyF1ztOm1fAXKTlIQ6QxOQRGxMpCuJ8T317sAiBNWfZaqWRZoG3rbLbAUpLk4rk/8O0B9FzJyluxCrpM9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1235739},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"ae447387ecbc7bbb60700081597ecdf42996562b","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.16_1778945784887_0.5278387862629841","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@agent-session-broker/admin","version":"0.1.17","license":"MIT","_id":"@agent-session-broker/admin@0.1.17","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"d46ae4af312e7952c2b7739ca0a0452f58a54074","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.17.tgz","fileCount":86,"integrity":"sha512-udzyojnFzBaxfNtzX/HIWidQ9QA/wWvlAOkNRJaa7qowuIMItv0vV4Ir9Mqm5YqdOYbJtpJq5JWeZe2REaWeeg==","signatures":[{"sig":"MEYCIQDH/haIHrZancccPk2zMY/B/au/fuJsGDSmYCg7mD/yjgIhANUX/5KsSm+Ziti30paxe8WRFQGW9hyYzxrL4htrl3gS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1236523},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"907aca28eac6f70e9506e91570301eea291641d4","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.17_1779091004643_0.3933985394655073","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@agent-session-broker/admin","version":"0.1.18","license":"MIT","_id":"@agent-session-broker/admin@0.1.18","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"78fd479d01f1d247d49a755e4cd75b5a3f8100f3","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.18.tgz","fileCount":86,"integrity":"sha512-LHXAJicJS3uWcdIO7GO/QvMIWBUfbcogywmSmpPD2TMjCVIIsCj6MW4yuPplloAUXdlS1qnlosbt25Phhb3lPw==","signatures":[{"sig":"MEQCICgBZJ1/OpACuxZISA50jNlj4d4ST+LK+KYGCAo1cu5eAiA8WztqT9POAiGbKq6TqZAm+iuPRgfYcSRsftieUKjk3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1244829},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"b186e0b23c5f535ae888361c5f6c24dc4e398c11","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.18_1779097062916_0.7522978558389493","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@agent-session-broker/admin","version":"0.1.19","license":"MIT","_id":"@agent-session-broker/admin@0.1.19","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"4e79202e478d594bc24c9e792819d1705fef23fa","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.19.tgz","fileCount":86,"integrity":"sha512-MZafHevFJ6e5yvz3wt547BNgtejh8KTJo6CG6WoeQXFPbIAtPHyD6syFrVy0tAY2TvVWWHwC+qiRq1zLEQ8DWQ==","signatures":[{"sig":"MEUCIQCdZfuexTeu9ENgZNnQPRFzX0both9RUOjGgwJAJTvrlwIgbAQyE7/bu48yrhRDdzZPml1nAOMS033PNE3PXmdCf0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1247948},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"4c5364b838be15c4ccf494fc80951b24da1b91fb","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.19_1779115453801_0.011039678557027477","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@agent-session-broker/admin","version":"0.1.21","license":"MIT","_id":"@agent-session-broker/admin@0.1.21","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"8ff7fb04bd02d64caa8779c1be66c37c4b39cff3","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.21.tgz","fileCount":86,"integrity":"sha512-Uvbz/eTxyxq21JVrd1u6JlaWATTRg8XU0sS9zfASZJR6EBEpsbgmu86czh6oWg/WVhuiYHouJ0wMmizEqaoDmg==","signatures":[{"sig":"MEUCIQCszSEyjpnY3evaMUxgyNPRIihQS4Ca/2cNbxm5HLZdAgIgCnXIfm3pvUm4O1riB9tFFQ+KicwKDySIQfr5Cw2GEyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1257379},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"e9649a77a8fe868ced416ab7fdae95426e00f8cb","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.21_1779146797926_0.1462600278537589","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@agent-session-broker/admin","version":"0.1.22","license":"MIT","_id":"@agent-session-broker/admin@0.1.22","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"69029bb5184e0fbcc1bbd0417fb05964721cc8db","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.22.tgz","fileCount":86,"integrity":"sha512-zICLf//66UYD0/XqkhH80niSHZ7putjS948Fhxsb9fUUyZpRde5M3KfytT+pHZ5puDhsGD73/pNAu8c1zoLOZg==","signatures":[{"sig":"MEYCIQCZ7DmQ+mRk9bvxE8ggI3+k9o0MrRNzTgn4FHTxaN86nQIhAJqVEuXDyxJbDogqSvw8mAWREtnxa1nhrVZXC4QrBm+9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1279296},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"a92babf0a6878f7443e1b38e1d1aa55bf82f3139","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.22_1779190276528_0.1605710411966368","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@agent-session-broker/admin","version":"0.1.25","license":"MIT","_id":"@agent-session-broker/admin@0.1.25","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"ee101d6ff8629706ac2bcfab3aa904434f6ab23d","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.25.tgz","fileCount":87,"integrity":"sha512-8N6m9f2bIpXBvxU1yYVuZLxTZZ6PNCLiq2605V9KwZG5dq9k7c/3leNs49PBveqvYIJukD/TgVRxgmWwcNSpHA==","signatures":[{"sig":"MEYCIQDXMxZyWxUMJG7ccR00RK3yGiGha4ReDQPRSiwUPfe7UAIhAIrSj8aXUsP7AYbQjY4mGeOX8UMS7Ycc+XOAFAeC/GZv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1289282},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"1ecc56d8f543737de238bda27dda3fa11960f4d2","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.25_1779276451987_0.4401985579645715","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@agent-session-broker/admin","version":"0.1.26","license":"MIT","_id":"@agent-session-broker/admin@0.1.26","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/slack-codex-broker#readme","bugs":{"url":"https://github.com/HOOLC/slack-codex-broker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"4e5e0dccbb4f6aa8b51d5d1092a15f76601e9f87","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.26.tgz","fileCount":88,"integrity":"sha512-zQhVqVx7ITFYdi28j9yTd7TlwAWprg2hpw9f4bQY/v6slDQ5RaokU/XKqx2pha4vS5aHVYYYu9E4gne28h0RGg==","signatures":[{"sig":"MEYCIQDTq2gB1C07edRW2BqY+COf3oQfi62AQ17hnvfPiiWjTQIhAI/HdaUu+fQ5BRjnUcVMVI8uV3eYzrt+zb7TEfZrocMH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1290002},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"b2a913dcd0726a0b7b19e787da863f012e3c363b","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/slack-codex-broker.git","type":"git"},"_npmVersion":"10.9.7","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.26_1779303124558_0.29457488247967323","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@agent-session-broker/admin","version":"0.1.28","license":"MIT","_id":"@agent-session-broker/admin@0.1.28","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"homepage":"https://github.com/HOOLC/open-worker#readme","bugs":{"url":"https://github.com/HOOLC/open-worker/issues"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"dist":{"shasum":"0ab5db0101571d2fd8a0b5ba8de0eaf0b8cc122c","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.28.tgz","fileCount":159,"integrity":"sha512-6dbJGwGGCLETktoAM48qek22vCdKZz/V1/s20vXqxwJi56ZlEZFKutepI0xStXS6LE0uqkF2kXLSwJLGBYg6Fg==","signatures":[{"sig":"MEQCIF1iJPfbZc0eixv0fpFGVupqhpVpNoH4vuFBpbRQn+26AiAKseqEqUGBNGZUUc5UduElN8vLoigPxJXqasd1+rDe6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2933538},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"2d99cc7ce32ed4d6bcab3b4a6eb8cb31f750aca1","_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"repository":{"url":"git+https://github.com/HOOLC/open-worker.git","type":"git"},"_npmVersion":"10.9.2","description":"Admin service and UI for the agent session broker.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"ws":"^8.18.3","react":"19.2.6","react-dom":"19.2.6","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin_0.1.28_1786706037724_0.49375890666311784","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@agent-session-broker/admin","version":"0.1.29","description":"Admin service and UI for the agent session broker.","homepage":"https://github.com/HOOLC/open-worker#readme","bugs":{"url":"https://github.com/HOOLC/open-worker/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/HOOLC/open-worker.git"},"bin":{"agent-session-broker-macos-bootstrap":"scripts/ops/macos-bootstrap.mjs"},"type":"module","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@larksuiteoapi/node-sdk":"^1.66.0","@modelcontextprotocol/sdk":"1.27.1","marked":"^18.0.4","react":"19.2.6","react-dom":"19.2.6","ws":"^8.18.3"},"engines":{"node":">=22.13.0"},"_id":"@agent-session-broker/admin@0.1.29","gitHead":"f813dcc946893827d53388c3ac97427207d95cc2","_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-XoTnkJKa8WpR9h26/oAyhr/O65D5AmdtERdmFYijqqPqyHookVYNAYkqnupi45O3gFr8gQky+BIVjxoXxQHhiw==","shasum":"fb692da7626823e37ce78f1325e47adb177dd1ca","tarball":"https://registry.npmjs.org/@agent-session-broker/admin/-/admin-0.1.29.tgz","fileCount":163,"unpackedSize":3196301,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-session-broker%2fadmin@0.1.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICpB221nDsiumDm6k7T0lWYY3z8ax0JO8lpZUpfC7meoAiB+BB/H0rlkOZCbnzJ9NbtO0S2ME1VapDOcxLkbRhT2RQ=="}]},"_npmUser":{"name":"zzj3720","email":"zuozijian1994@gmail.com"},"directories":{},"maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/admin_0.1.29_1786727555801_0.9563813238165053"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-14T06:33:42.745Z","modified":"2026-08-14T17:12:36.393Z","0.1.0":"2026-05-14T06:33:43.038Z","0.1.1":"2026-05-14T06:48:02.607Z","0.1.2":"2026-05-14T06:56:53.179Z","0.1.3":"2026-05-14T08:21:00.316Z","0.1.4":"2026-05-14T10:15:48.877Z","0.1.5":"2026-05-14T10:41:13.144Z","0.1.6":"2026-05-14T10:48:59.911Z","0.1.7":"2026-05-14T11:40:33.527Z","0.1.8":"2026-05-14T11:52:33.529Z","0.1.10":"2026-05-14T12:17:52.620Z","0.1.11":"2026-05-14T12:55:04.978Z","0.1.12":"2026-05-14T19:25:33.259Z","0.1.13":"2026-05-14T19:34:52.685Z","0.1.14":"2026-05-14T20:10:54.969Z","0.1.15":"2026-05-15T04:00:24.481Z","0.1.16":"2026-05-16T15:36:25.093Z","0.1.17":"2026-05-18T07:56:44.805Z","0.1.18":"2026-05-18T09:37:43.124Z","0.1.19":"2026-05-18T14:44:13.981Z","0.1.21":"2026-05-18T23:26:38.091Z","0.1.22":"2026-05-19T11:31:16.672Z","0.1.25":"2026-05-20T11:27:32.171Z","0.1.26":"2026-05-20T18:52:04.773Z","0.1.28":"2026-08-14T11:13:57.859Z","0.1.29":"2026-08-14T17:12:35.966Z"},"bugs":{"url":"https://github.com/HOOLC/open-worker/issues"},"license":"MIT","homepage":"https://github.com/HOOLC/open-worker#readme","repository":{"type":"git","url":"git+https://github.com/HOOLC/open-worker.git"},"description":"Admin service and UI for the agent session broker.","maintainers":[{"name":"zzj3720","email":"zuozijian1994@gmail.com"}],"readme":"# slack-codex-broker\n\nMinimal Slack + China Feishu bridge to Codex for multi-repository workflows.\n\nIt connects to Slack over Socket Mode, starts or resumes one Codex app-server thread per Slack thread, and gives each Slack session an isolated workspace directory. The Codex session always starts in that neutral workspace instead of being pinned to a specific repository. If code work is needed, the agent is expected to use a shared `repos/` cache for canonical clones and create any task-specific git worktrees under the current session workspace. Normal thread replies continue the same Codex thread. Sending `-stop` in the thread interrupts the current Codex turn.\n\nOn the first `@bot` inside an existing Slack thread, the broker backfills a bounded slice of earlier thread history into Codex. If Codex needs older context than the initial backfill, it can query the broker's local thread-history HTTP API from inside its shell.\n\nFeishu support runs in the same broker process as Slack. Feishu group `@bot ...`: create or resume a group session; private chats are ignored. For production parity, configure `FEISHU_ENABLED=true`, `FEISHU_GROUP_MESSAGE_MODE=all`, `FEISHU_APP_ID`, `FEISHU_APP_SECRET`, and at least one Feishu bot identity. `at_only` is a visible degraded mode; set `FEISHU_ALL_MESSAGE_DELIVERY_VERIFIED=true` only after the real non-@ follow-up smoke passes; keep `LOG_RAW_FEISHU_EVENTS=false` unless collecting a focused, redacted fixture.\n\nFeishu rollout:\n\n- run the preflight and smoke scripts against a China Feishu self-built app installed in the target group\n- capture a sanitized pre-rollout log snapshot; the snapshot redacts non-structured lines instead of copying raw Docker log text\n- verify metadata recursively redacts unsafe string fields while preserving safe posture text such as `FEISHU_APP_SECRET=missing`\n- Operator-facing auth status and replacement output summarize filesystem paths instead of echoing full host paths\n- Profile command output also summarizes auth/profile paths without full host filesystem paths\n\nAdmin and chat APIs are platform-aware:\n\n- platform-aware `Slack/Feishu user -> GitHub author` mappings\n- `GET /admin/api/status?platform=slack|feishu`\n- `DELETE /admin/api/github-authors/:userId?platform=slack|feishu`\n- filters sessions, jobs, and GitHub author mappings to that platform\n- allowlisted `recentBrokerLogs` remain cross-platform\n- Platform query/body values must be `slack` or `feishu`; invalid values return 400 `invalid_platform` instead of falling back to Slack\n- generic platform-aware chat endpoints\n- Generic `/chat/*` JSON/query contracts use canonical `conversationId` and `rootMessageId` fields\n- also accepts `conversation_id` and `root_message_id` aliases\n- Invalid `platform` values return 400 `invalid_platform` with allowed values `slack` and `feishu`\n- Generic file uploads use canonical `filePath` or `contentBase64`\n- `file_path` and `content_base64` aliases accepted and named in validation errors\n- Inline `contentBase64`/`content_base64` uploads require `filename` and must decode to non-empty file content\n- Generic file uploads accept `filePath` or non-empty `content_base64` plus `filename`\n- `richText`/`rich_text` and `card` can be structured JSON values or JSON strings\n- invalid JSON strings return 400 with only the field name, not the raw payload\n- request logging redact message text, state reasons, file comments/alt text, rich/card payloads\n- `/integrations/*` request logging redacts MCP call `arguments`\n- Registered jobs receive `CHAT_PLATFORM`, `CHAT_CONVERSATION_ID`, and `CHAT_ROOT_MESSAGE_ID`\n- legacy Slack `channel_id` and `thread_ts` aliases only for Slack compatibility when `platform` is omitted or set to `slack`\n- Invalid generic job `platform` values return 400 `invalid_platform` before coordinate validation\n- Job callback `detailsJson`/`details_json` fields and `/integrations/mcp-call` `arguments` can be structured JSON values or JSON strings\n- `pnpm test:e2e:feishu-mock` covers the Feishu mock e2e gate, fixture replay, and Slack+Feishu same-process readiness\n- `pnpm rfc:feishu-audit` and `pnpm rfc:feishu-audit:local` summarize implementation surfaces, test slices, behavior evidence probes, package-script gates, and remaining real-tenant evidence gaps without sending Feishu messages\n- its JSON still keeps `ok=false` until real tenant gates pass\n- run `pnpm manual:feishu-smoke -- --preflight --env-file .env`; the extra `--` keeps Node's own `--env-file` flag from intercepting the smoke-checker argument\n- smoke CLI value flags also accept `--flag=value`; missing values fail before another flag is swallowed\n- secret-bearing values only as set/missing\n- generic platform-aware chat endpoints include `curl -sS -X POST http://127.0.0.1:3000/chat/post-message` and `curl -sS -X POST http://127.0.0.1:3000/chat/post-file`\n- `limit` (optional positive integer, clamped by `SLACK_HISTORY_API_MAX_LIMIT`; invalid values return 400 `invalid_limit`)\n- Generic chat history `limit` uses the same positive-integer validation\n- Generic chat history `format` uses the same `text|json` validation before broker delegation\n- For Feishu, outbound message images up to 10 MB are uploaded as image messages and fall back to file upload when still within the 30 MB file/resource limit\n\n## What It Expects\n\n- A Slack app using Socket Mode\n- Codex authentication via either:\n  - `OPENAI_API_KEY`\n  - a mounted `auth.json` plus `CODEX_AUTH_JSON_PATH`\n\n## Slack App Setup\n\nCreate a Slack app with:\n\n- Socket Mode enabled\n- Interactivity enabled\n- App-level token with `connections:write`\n- Bot token scopes:\n  - `app_mentions:read`\n  - `chat:write`\n  - `channels:history`\n  - `files:read` if you want Codex to receive image attachments from Slack messages\n  - `files:write` if you want Codex to upload images/files back into Slack threads\n  - `users:read` if you want Codex to see Slack display names instead of only raw user IDs\n  - `users:read.email` if you want the broker to infer GitHub co-author mappings from Slack profile email\n\nEvent subscriptions needed for the current broker flow:\n\n- `app_mention`\n- `message.channels`\n- `message.im` for direct-message sessions\n\nIf you want to support private channels or DMs, add the corresponding `groups:history`, `im:history`, or `mpim:history` scopes plus matching message events.\n\nThe broker's Slack co-author flow uses Socket Mode interactive envelopes, thread ephemerals, and modals. With Socket Mode enabled, you do not need a separate public interactivity Request URL for this flow.\n\n## Environment\n\nCopy `.env.example` to `.env` and fill in:\n\n- `SLACK_APP_TOKEN`\n- `SLACK_BOT_TOKEN`\n- optional `SLACK_INITIAL_THREAD_HISTORY_COUNT`\n- optional `SLACK_HISTORY_API_MAX_LIMIT`\n- optional `SESSIONS_ROOT`\n- optional `REPOS_ROOT`\n- optional `LOG_DIR`\n- optional `LOG_LEVEL`\n- optional `LOG_RAW_SLACK_EVENTS`\n- optional `LOG_RAW_CODEX_RPC`\n- optional `LOG_RAW_HTTP_REQUESTS`\n- optional `LOG_RAW_MAX_BYTES`\n- optional disk cleanup settings (`DISK_CLEANUP_*`), including safe-by-default\n  dry-run mode and session cache TTL. Keep `DISK_CLEANUP_DRY_RUN=true`\n  for the first few days after enabling cleanup, review the structured\n  candidate logs, and only set it to `false` after confirming the listed\n  paths are expected rebuildable artifacts.\n- one Codex auth mode\n- optional host Codex home mount if you want the container to inherit your global `~/.codex` memory/instructions\n\n## Codex Auth Modes\n\n### 1. API key\n\nSet:\n\n```env\nOPENAI_API_KEY=sk-...\n```\n\nThis is the simplest automation setup.\n\n### 2. Reuse Codex/ChatGPT OAuth\n\nMount an existing `auth.json` into the container and set:\n\n```env\nCODEX_AUTH_JSON_PATH=/auth/auth.json\n```\n\nThen add a read-only volume to `docker-compose.yml`:\n\n```yaml\nvolumes:\n  - ~/.codex/auth.json:/auth/auth.json:ro\n```\n\nAt startup the broker copies that file into its own `CODEX_HOME`/data directory and uses it to authenticate the embedded Codex app-server.\n\nThe main Codex runtime disables all built-in MCP servers by default, and starts the Codex app-server with the `apps` feature disabled so Apps/Connectors are not exposed to model turns. Keep tool access outside the main runtime and use broker-managed integrations instead. MCP removal only affects the broker's container-local Codex config. It does not modify your host `~/.codex/config.toml`.\n\n## Shared Codex Team Home\n\nBroker auth profiles are quota/auth boundaries, not memory boundaries. Shared Codex behavior should live in one team-level home:\n\n```env\nCODEX_TEAM_HOME=/app/.data/team-codex-home\nHOST_AGENTS_PATH_HOST=/Users/you/.agents\nHOST_AGENTS_CONTAINER_PATH=/Users/you/.agents\n```\n\nShared entries include:\n\n- `AGENT.md`\n- `AGENTS.md`\n- `memory.md`\n- `config.toml`\n- `memories/`\n- `skills/`\n- `superpowers/`\n- `rules/`\n- `vendor_imports/`\n\nRuntime behavior:\n\n- `CODEX_TEAM_HOME` defaults to `.data/team-codex-home`.\n- Each auth profile still has its own `CODEX_HOME` for `auth.json`, generated images, cache, logs, and runtime state.\n- Shared entries in each profile `CODEX_HOME` are symlinks to `CODEX_TEAM_HOME`.\n- New Slack sessions inject personal memory from `CODEX_TEAM_HOME/AGENT.md` once at `thread/start`; later turns reuse the existing session context instead of re-sending it.\n- The runtime shell path `~/.codex/AGENT.md` is wired back to `CODEX_TEAM_HOME/AGENT.md`, so agent-written memory updates are visible across auth profiles.\n- If the team home is missing and there is no existing shared profile/source content, the broker creates empty shared files/directories only.\n- If existing profile/source shared content is present while the team home is empty, the broker preserves the legacy local-copy behavior instead of linking profiles to empty team files.\n- Historical profile data migration is a one-off operator action and is intentionally not part of the runtime code path.\n- `HOST_AGENTS_PATH_HOST` plus `HOST_AGENTS_CONTAINER_PATH` lets relative skill symlinks like `../../.agents/...` resolve correctly if the team home contains those symlinks.\n- For docker-side skills that need to call a host-local helper service, either set an explicit container-safe URL such as `TEMPAD_LINK_SERVICE_URL=http://host.docker.internal:4320`, or leave it unset and let the broker probe the common host-local tempad endpoints automatically.\n\nBefore enabling this on an existing machine, seed `CODEX_TEAM_HOME` once from the reviewed canonical profile/global Codex files and keep an external backup of replaced profile-local shared entries. Do not move `auth.json` into the team home.\n\n## Run With Docker Compose\n\n```bash\ncp .env.example .env\ndocker compose up --build\n```\n\nOperational scripts for the real container:\n\n```bash\npnpm ops:check:real\npnpm ops:rollout:real\npnpm ops:status:real\npnpm ops:auth:real status\npnpm ops:auth:profiles bootstrap\npnpm ops:auth:profiles status\npnpm ops:auth:profiles list\npnpm ops:auth:profiles import-host --name backup-account\npnpm ops:auth:profiles use backup-account\npnpm ops:ui:real\n```\n\n`ops:rollout:real` reuses the current `slack-codex-broker-real` container's env vars and bind mounts, refuses to restart while active turns exist unless you pass `--allow-active`, rebuilds the image, recreates the container, and then runs the fixed post-update checks. Each rollout also writes sanitized metadata plus pre-rollout logs under `.backups/rollouts/`.\n`ops:status:real` prints a structured runtime snapshot for the live container, including health, active sessions, open inbound messages, background jobs, and recent broker logs. Use `--open-inbound-limit` and `--log-lines` to tune output volume.\n`ops:auth:real status` prints the live container's Codex auth files, runtime account identity, any quota/usage fields exposed by `account/read`, plus the current session state snapshot.\n`ops:auth:profiles` manages a local auth-profile directory under the live data root. The host auth is kept as a reference copy, while the docker auth points at a selectable `active` profile. Use `bootstrap` once, then `import-host --name <profile>` or `import --name <profile> --from <path>` to add more docker-side auth profiles, and `use <profile>` to switch the live container.\n`ops:ui:real` starts a local-only admin page on `127.0.0.1` so you can inspect sessions/account state and upload a replacement `auth.json` without using CLI flags directly.\n\n## Run On a macOS VM\n\nThe preferred macOS deployment model is package-first:\n\n- build and publish/pack the admin and worker npm packages outside the VM\n- run the bootstrap script with the package version to install\n- upload `auth.json` later through the admin page\n- do all later deploy / rollback operations from the admin page by target and\n  package version\n\nThere is no host-side code sync or production build step in the normal path.\n\n### First bootstrap on the VM\n\n```bash\nnpm install -g @agent-session-broker/admin@0.1.2\nagent-session-broker-macos-bootstrap --service-root ~/services/slack-codex-broker --package-version 0.1.2 --start-worker\n```\n\nThe bootstrap script installs `@agent-session-broker/admin@<version>` and\n`@agent-session-broker/worker@<version>` into the service root. Admin launchd\nruns through `current-admin`; worker launchd runs through `current-worker`.\n\nBefore running it, make sure the Slack app credentials are available through one of these sources:\n\n- the current shell environment, for example `SLACK_APP_TOKEN=... SLACK_BOT_TOKEN=... node scripts/ops/macos-bootstrap.mjs --start-worker`\n- an existing `config/broker.env` in the service root, which the bootstrap script will reuse for the new admin / worker env files\n\nWhat it prepares:\n\n- `releases/admin/npm-<version>/` and `releases/worker/npm-<version>/` package installs\n- `current-admin`, `previous-admin`, `failed-admin` release links\n- `current-worker`, `previous-worker`, `failed-worker` release links\n- shared runtime state under `.data/`\n- support homes under `runtime-support/`\n- launchd agents for:\n  - `io.github.hoolc.agent-session-broker` (admin/control plane)\n  - `io.github.hoolc.agent-session-broker.worker` (Slack/Codex worker)\n\nWhat it does not do:\n\n- it does not copy `auth.json`; import auth profiles later through `/admin`\n- it does not copy historical sessions, logs, jobs, or repo caches from another machine\n- it does not run `pnpm install` or `pnpm build` on the VM\n\n### Runtime layout on the VM\n\nThe npm packages are the release units. Runtime services execute code through\ntheir target-specific current release links, not from a source checkout.\n\n- `<service-root>/`:\n  - release manager and shared runtime root\n- `<service-root>/releases/admin/npm-<version>/`:\n  - npm install root for one admin package version\n- `<service-root>/releases/worker/npm-<version>/`:\n  - npm install root for one worker package version\n- `<service-root>/current-admin` and `<service-root>/current-worker`:\n  - symlinks to the active installed package roots\n- `<service-root>/previous-admin` and `<service-root>/previous-worker`:\n  - symlinks to the last good release for each target\n- `<service-root>/failed-admin` and `<service-root>/failed-worker`:\n  - symlinks to the most recent failed cutover for each target\n- `<service-root>/.data/`:\n  - shared broker state, sessions, jobs, logs, repos, auth profiles, codex home\n\n### Deploy and rollback\n\nThe admin service deploys a selected target and npm package version into a new\nrelease directory. Admin and worker are independent release targets: an admin\ndeploy switches only `current-admin` and schedules only the admin restart; a\nworker deploy switches only `current-worker`, restarts the worker immediately,\nand waits for worker readiness.\n\n- deploy:\n  - read package versions from the selected target's npm registry entry\n  - install the selected package under `releases/<target>/npm-<version>`\n  - switch that target's current symlink\n  - for worker deploys, restart the worker launchd service\n  - run worker health + Codex-ready checks with a 90s startup window, because worker startup can spend tens of seconds reconciling Slack thread state before `/readyz` answers\n  - for admin deploys, schedule the admin launchd service restart from `current-admin`\n  - auto-rollback on failed cutover\n- rollback:\n  - switch the requested target back to `previous-*`, or to an explicitly selected installed package version\n  - restart only that target's launchd service\n  - run worker health checks only for worker rollback\n\nBecause old releases stay on disk, rollback is a pointer switch. It does not fetch source or build a missing version.\n\n### Admin surface\n\n```text\nGET /admin\nGET /readyz\nGET /admin/api/status\nPOST /admin/api/auth-profiles\nPOST /admin/api/auth-profiles/:name/activate\nDELETE /admin/api/auth-profiles/:name\nPOST /admin/api/github-authors\nDELETE /admin/api/github-authors/:slackUserId\nPOST /admin/api/deploy\nPOST /admin/api/rollback\n```\n\nTypical first-run flow:\n\n1. Open `/admin`.\n2. Upload one or more `auth.json` files into Auth Profiles.\n3. Activate the profile you want the worker to use.\n4. Later, deploy a package version from the Deploy panel.\n5. Roll back from the same panel when needed.\n\nThe same admin page also exposes a `GitHub Authors` panel for manually maintaining `Slack user -> GitHub author` mappings. Manual entries override Slack-inferred mappings.\n\nIf `BROKER_ADMIN_TOKEN` is set, `/admin/api/*` requires that token via `x-admin-token` or `Authorization: Bearer ...`. If it is unset, the admin API is still enabled, so only expose the broker port in environments you trust.\n\nThe container image:\n\n- uses Node 22.13+ for the built-in SQLite runtime state store and lint/format toolchain\n- installs `git`\n- installs `gh`\n- installs `rg` via `ripgrep`\n- installs the Codex CLI globally via `@openai/codex`\n- runs the broker with `node dist/src/index.js`\n\n## Runtime Layout\n\nInside the container:\n\n- broker state lives under `/app/.data`\n- Codex state defaults to `/app/.data/codex-home`\n- session workspaces default to `/app/.data/sessions/<channel-thread>/workspace`\n- shared canonical repositories live under `/app/.data/repos`\n- structured logs default to `/app/.data/logs`\n\nIn practice, `.data` is the broker's runtime data root. It contains both durable broker-owned identity/config data and disposable runtime state.\n\nDurable broker-owned identity/config data:\n\n- `codex-home/`\n- `auth-profiles/`\n\nDisposable runtime state:\n\n- `state/broker.sqlite`\n- `sessions/`\n- `jobs/`\n- `logs/`\n- `repos/`\n\nThe macOS bare-run deploy path only reuses the durable broker-owned subset that defines behavior and identity. It intentionally leaves the disposable runtime state behind and starts the VM with a clean `state/`, `sessions/`, `jobs/`, `logs/`, and `repos/`.\n\n## Logging\n\nThe broker now keeps a layered JSONL log set intended for postmortem debugging.\n\nDefault layout under `LOG_DIR`:\n\n- `broker/<yyyy-mm-dd-hh>.jsonl`\n  Hourly global structured application logs for every `info` / `warn` / `error` / `debug` event.\n- `sessions/<base64url-session-key>/<yyyy-mm-dd-hh>.jsonl`\n  Per-session fan-out log. Useful when one Slack thread goes bad and you want only its history.\n- `jobs/<base64url-job-id>/<yyyy-mm-dd-hh>.jsonl`\n  Per-background-job fan-out log.\n- `raw/slack-events/<yyyy-mm-dd-hh>.jsonl`\n  Raw Socket Mode envelopes from Slack.\n- `raw/codex-rpc/<yyyy-mm-dd-hh>.jsonl`\n  Raw Codex app-server RPC requests, responses, and notifications.\n- `raw/http-requests/<yyyy-mm-dd-hh>.jsonl`\n  Raw local broker HTTP traffic for `/slack/*` and `/jobs/*`.\n\nSupported environment knobs:\n\n- `LOG_LEVEL=debug|info|warn|error`\n- `LOG_RAW_SLACK_EVENTS=true|false`\n- `LOG_RAW_CODEX_RPC=true|false`\n- `LOG_RAW_HTTP_REQUESTS=true|false`\n- `LOG_RAW_MAX_BYTES=131072`\n- `DISK_CLEANUP_ENABLED=true|false`\n- `DISK_CLEANUP_CHECK_INTERVAL_MS=300000`\n- `DISK_CLEANUP_MIN_FREE_BYTES=10737418240`\n- `DISK_CLEANUP_TARGET_FREE_BYTES=21474836480`\n- `DISK_CLEANUP_INACTIVE_SESSION_MS=86400000`\n- `DISK_CLEANUP_JOB_PROTECTION_MS=172800000`\n- `DISK_CLEANUP_OLD_LOG_MS=86400000`\n\nNotes:\n\n- Raw logs are intentionally verbose and can grow quickly during long sessions. Oversized raw payloads are truncated to `LOG_RAW_MAX_BYTES` before they are written.\n- Admin status reads only a bounded tail of recent broker JSONL files; it does not decode entire log files into memory.\n- Broker-managed background jobs are automatically cancelled once they exceed five hours of runtime, including restartable jobs that are already over the limit when the worker boots.\n- When free space falls below `DISK_CLEANUP_MIN_FREE_BYTES`, the worker removes old hourly log files first. If space is still below `DISK_CLEANUP_TARGET_FREE_BYTES`, it removes sessions inactive for at least `DISK_CLEANUP_INACTIVE_SESSION_MS`, oldest activity first. Active turns, pending inbound work, and running jobs protect sessions only until `DISK_CLEANUP_JOB_PROTECTION_MS`; older sessions can be removed with their jobs.\n- `/slack/post-file` request logging redacts inline `content_base64` payloads into a size marker instead of writing the full blob.\n- Session and job log files are written independently, so one noisy thread no longer forces the entire broker state or log history into one giant file.\n\n## Current Interaction Model\n\n- First `@bot ...` in a thread: create or resume the session, ensure the session workspace exists, send the message to Codex\n- First `@bot ...` inside an already active human thread: also backfill the most recent earlier thread messages before that mention\n- Later plain thread replies: continue the same Codex thread\n- Direct message root message: create a session keyed by that DM thread and send it to Codex\n- `-stop`: interrupt the current Codex turn\n- If the task needs code, Codex should use `/app/.data/repos` for canonical clones and create any worktrees or task directories inside the current session workspace\n\n## Slack Thread History API\n\nThe broker exposes a local-only helper endpoint on the same port as the health check:\n\n```bash\ncurl \"http://127.0.0.1:3000/slack/thread-history?channel_id=C123&thread_ts=111.222&before_ts=111.223&limit=20&format=text\"\n```\n\nQuery params:\n\n- `channel_id` (required)\n- `thread_ts` (required)\n- `before_ts` (optional, exclusive upper bound)\n- `limit` (optional, clamped by `SLACK_HISTORY_API_MAX_LIMIT`)\n- `channel_type` (optional)\n- `format=text|json` (default `json`)\n\nThis is meant for Codex itself to pull older Slack context when the initial backfill window is not enough.\n\n## Slack Post APIs\n\nThe broker exposes two local-only delivery endpoints for Codex:\n\n### Post text\n\n```bash\ncurl -sS -X POST http://127.0.0.1:3000/slack/post-message \\\n  -H 'content-type: application/json' \\\n  -d '{\"channel_id\":\"C123\",\"thread_ts\":\"111.222\",\"text\":\"working on it\"}'\n```\n\n`text` accepts normal Markdown/markdownish input. The broker converts it to Slack `mrkdwn` before posting.\n\n### Upload a local image or file\n\n```bash\ncurl -sS -X POST http://127.0.0.1:3000/slack/post-file \\\n  -H 'content-type: application/json' \\\n  -d '{\"channel_id\":\"C123\",\"thread_ts\":\"111.222\",\"file_path\":\"/absolute/path/to/report.png\",\"initial_comment\":\"latest screenshot\"}'\n```\n\n`/slack/post-file` accepts either:\n\n- `file_path` pointing at a local file visible to the broker process\n- or `content_base64` plus `filename`\n\nOptional fields:\n\n- `title`\n- `initial_comment` (or `text` as an alias)\n- `alt_text`\n- `snippet_type`\n- `content_type`\n\n`initial_comment` accepts normal Markdown/markdownish input and is converted to Slack `mrkdwn` before upload completion.\n\n## Notes\n\n- This compose file is intentionally minimal and does not pre-mount or pre-select any single target repository.\n- The runtime image already includes `gh`, `git`, and `rg`.\n- The broker no longer manages repo selection or git worktree naming. That is now an agent-level responsibility inside the shared `repos/` cache and the current session workspace.\n\n## GitHub Support\n\nIf you want Codex to push branches or open PRs with `gh`:\n\n- set `GH_TOKEN` (and optionally `GITHUB_TOKEN`) to a token with `repo` scope\n- mount an SSH agent socket if your repo remote uses `git@github.com:...`\n\nExample:\n\n```env\nGH_TOKEN=gho_***\nSSH_AUTH_SOCK_HOST=/run/host-services/ssh-auth.sock\nSSH_AUTH_SOCK_CONTAINER=/ssh-agent\n```\n\nThe runtime image includes `gh`, exports your GitHub token to the process environment, and configures git to:\n\n- use `gh auth git-credential` as the credential helper\n- rewrite `git@github.com:...` remotes to `https://github.com/...`\n\nThat means `gh` and ordinary `git push` can both work with a GitHub token, even if the checked-out repo still uses an SSH-style origin URL.\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}