{"_id":"gctrl","_rev":"35-fbdc4b5060f338b1afcf55c8e2baf80b","name":"gctrl","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"gctrl","version":"0.1.0","keywords":["opencode","tui","bun","opentui","sqlite","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.1.0","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"bin":{"grctrl":"bin/grctrl.js"},"dist":{"shasum":"8f1aaa0f4bf2e707068b8ff5d52ab316f55ec5be","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.1.0.tgz","fileCount":14,"integrity":"sha512-4i++s0mzJ3Tdvdd+qDRV7AT2WBY7+TvMJkFIVqEBe583ZHaMTL/U3yeASCUruhKniW60e2ADMxr+kiZmAHkP1w==","signatures":[{"sig":"MEYCIQDC5FmK4z4yKNGKJ+/fzzNVwLVBDAoP32e+sTrAs2/nXAIhAKYY94YWnKhJcJg0+a2mMmUSLUATB++Ujv1GXBOpmI2K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96797},"type":"module","engines":{"bun":">=1.1"},"gitHead":"0ccf851ce5254ea9e68c9f2b266ff01534d2baca","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"_npmVersion":"11.6.2","description":"Real-time OpenCode session monitor TUI built with Bun, OpenTUI, and read-only SQLite access.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.1.0_1773672643789_0.13336943606535168","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"gctrl","version":"0.1.1","keywords":["opencode","tui","bun","opentui","sqlite","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.1.1","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"0223f4623e2c34a37cab425f1ab1823d89ad0fef","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.1.1.tgz","fileCount":14,"integrity":"sha512-xu/GxR4fP/5gOho5lozejRbpMbLRErCeHF0lhxDEklj8rdoDAnEYw+tlIn/91oXuPVfP0T7epqOvnUEZ7qzRXw==","signatures":[{"sig":"MEYCIQDMkDbj7viwjz0yq/LkwBh5OEUF6k/rH1IGo6geVlDnhwIhAPWMJV/WO/miBSYFZ7j8ER3jyDnleK/1ImowAla3k+1w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96795},"type":"module","engines":{"bun":">=1.1"},"gitHead":"a59a7508466e7b824a62612ea75420c593cdf456","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"_npmVersion":"11.6.2","description":"Real-time OpenCode session monitor TUI built with Bun, OpenTUI, and read-only SQLite access.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.1.1_1773672703377_0.6288952235190248","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"gctrl","version":"0.1.2","keywords":["opencode","tui","node","opentui","sqlite","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.1.2","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"dd5d238b8c16fd6e5edbe4759413cc133d75f0bc","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.1.2.tgz","fileCount":19,"integrity":"sha512-ciK8y3WU8bOK51g09HX/0XVHriZbhp6A+491SoQNzRAKT7JRFJWd3f+Duu2Nw+8lLhHXT0bqfBfdWNdRH2xYIw==","signatures":[{"sig":"MEYCIQD5qeuB+BpVPegk8BSNPJi4HGK8PvxyBq/GkBrXd4tMXQIhAJNIXJw9f+cyatRFXKGgCcHNURuvG//w5x4CWIrxwNJE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133566},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"e42401735825c831066ad859749cbefe2acb76c4","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.10.1","description":"Real-time OpenCode session monitor CLI with Node.js built-in SQLite access.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.1.2_1773986446466_0.415026498519917","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"gctrl","version":"0.1.7","keywords":["opencode","tui","node","opentui","sqlite","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.1.7","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"def31b7186a70aac8050b01d57c77acde642ca8b","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.1.7.tgz","fileCount":20,"integrity":"sha512-FGh/hc5dXz7z18kT8qbaXwzfpZVbiJec0MChaYMbrgJx42Q//8CN5Ou2Y77uY1+YQ1kpNXHRTF68PfUTrx+HEA==","signatures":[{"sig":"MEYCIQDp2t/yHOZgYMo0BnlMAgGJJ5ZO9QQvbxrPnh3EY8v1SwIhANBwvS1k0M5op4lTM8ygZQKSAqZhM/Hx86mjZwVsL1zh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112687},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"e42401735825c831066ad859749cbefe2acb76c4","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode session monitor CLI with Node.js built-in SQLite access.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.1.7_1774021423773_0.18548964432332338","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"gctrl","version":"0.1.8","keywords":["opencode","tui","node","opentui","sqlite","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.1.8","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"bd88f8e04924a28883172908650219481511f5d3","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.1.8.tgz","fileCount":22,"integrity":"sha512-hJEkjzcSFROPcFZMT94vDtDRUHDpdFnkUEg01iDpmGXNTxq2AFK7//xep3I2vc622/ZR8EEFt6dTxVaD3iixXQ==","signatures":[{"sig":"MEUCIQDXxl6DJUPYUK5KQdU/wQUWepd1oMi/aFS/jV/2YQPUsAIgff9HRTfZNItZdEgR/MGHR87fST/5CTVODdewahmy1/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202634},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"bca73e74538169c4a3e32dffb8ee01dd46145f55","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode session monitor CLI with Node.js built-in SQLite access.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.1.8_1774186960258_0.7331553652889535","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"gctrl","version":"0.1.9","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.1.9","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"6f233bdfc18e21259263537fbd6fa59a9a3e0e8a","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.1.9.tgz","fileCount":23,"integrity":"sha512-aw19f0WaQtj9KKkc1MAdc8Iih8nG7Dc3RPjZxTTjkvFJYUB1iGPF8tq7705Hs/MXQcN8NwJjK6a/td4/npN6jw==","signatures":[{"sig":"MEUCIQDwiEmYa69BwR6plSHkP1CTw/QFr5+ZCnMiCBZxZza34AIgD0NZttB6UVrukvMZpg7nZGuvP5ZFqpZv2sgehdEYPtg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214988},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"715c19e44172a3c79a68269cafd5d105d60e94c0","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode session monitor CLI","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.1.9_1774539389604_0.6589914585421015","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"gctrl","version":"0.1.10","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.1.10","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"70beb88c569f861c4a43a82cbb42231b971ef565","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.1.10.tgz","fileCount":23,"integrity":"sha512-inHRZYiSFF4/TQZsEuA9P6jCEAiJQh37hm+l3MDNwIRB+tV3sG8O3bqeVnSzwpeNa3TwWGoC7sFQxOqJyP8UWw==","signatures":[{"sig":"MEUCIQCaoohgwtELA2ZB6wlgxIe7XoYSzkwqmHpavPZ5JrZZDAIgMViBJDea1Fj2gb29AVn7z09BttffCje0EtQWXybFIcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217796},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"978d82f58cf167898922a64a6d164f5cd5c437c0","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode session monitor CLI","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.1.10_1774580631923_0.23654956566467167","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"gctrl","version":"0.2.0","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.0","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"1936cc41cce8cc451d9292e3e2ea02e67d19136e","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.0.tgz","fileCount":22,"integrity":"sha512-7TNTJiWfrt5/7FseNoufYBXghtW8qCTMGKQJR9W+fd7+PZiNlbCGXVrNVBXqG6l3yNRbhKu0MSml33HwMXzkeA==","signatures":[{"sig":"MEUCIFQThrBYewvMYxhr43byVzvvve/bNbFlt1l6LrSPmhx5AiEAuuYACf2wXNMCo+e9s5HRPPVPVEUXg8K2HOLmQt8G0Rg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244325},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"318bfa7472769cb2a5cd7972690fa6e1c4001bbb","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.0_1775414240031_0.6870801048024928","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"gctrl","version":"0.2.1","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.1","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"9cab357a3905be56d6a994a7d56a4236a2461e3a","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.1.tgz","fileCount":23,"integrity":"sha512-xhZxnw0i7+hD8dpQPzdFDVjYLvpiR+fn7Q+9CpiYdzOAG1Ff8W3qONgPxQwobIbDF0fhWxW9XBvPhx8FUMzBQQ==","signatures":[{"sig":"MEUCIQC5EyVdNgvbQtJK1zG1ha0wvo0ExqdoYbpbMTbGHMYd3QIgKKQpc108Y1A6CjNW46AbxdDu0rlxp5e77eBCPRTE3IQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246794},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"e626e17f04fd77dc1d3169e7ffb5fa83651ba138","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.1_1776053505030_0.3006269216124793","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"gctrl","version":"0.2.2","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.2","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"ad972d6c446dc8eb1c7634ded99bf742a3148705","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.2.tgz","fileCount":23,"integrity":"sha512-m6BqOtK/lUHxx++FJV2UErMMem8Dg9VjHqBAoPSlB7x9UMnCl3IxHAMP592l2I++lXIxgBNgTSjsQhGDTfGjvQ==","signatures":[{"sig":"MEUCIDYLlfUB88KCeGuNmxWEXJbJJam2GGx9mFHgDOq8axqtAiEAlByDIX+bA+z/XYQK26dwTlcI3bElEdXCl95n83Jotrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245924},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"0a962d6abc020d7722744a20d9c9ca544cc8c3d5","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.2_1776849780477_0.25086839145683704","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"gctrl","version":"0.2.3","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.3","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"51a95bd03efc25a09562405e8dd3dc2f948e0e46","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.3.tgz","fileCount":53,"integrity":"sha512-iC1yFm1+0ZVM/Eot79vxtx4Iy4Q1hyPfv+mfHWi6U2Z8/MV/o7N/8zx3ia/gANqh9e+WSrCiFDXX5at9FqSlCg==","signatures":[{"sig":"MEYCIQCytQiH80r/IlSwGdEziWtRpkFP40A2kh+8yWZSJKAijgIhAM2GF7D6dDDoHQNTAYPcNlHzA2zNUTjqNQjHbcA7IllL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":472194},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"fbbef270c8d9f1fe26a4197d361ae7d205aea5f2","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.3_1776947458283_0.9988447787655637","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"gctrl","version":"0.2.4","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.4","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"c59a035fe281ad29e23af868b40d78679cab53e6","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.4.tgz","fileCount":58,"integrity":"sha512-DkHLeMBrva3WJabGDw0n8auinbvtOd1iG67MYCTYBJaxyjL5F1iTTjMb1gUB+i7HD5Nqoe+L3FmyN94l7/2raA==","signatures":[{"sig":"MEUCIQDWBl3mOq9Zy2hl8HSW0CIGh4+4l8hBGm9AS8S6fXWhBwIgER9nrDBj7f8vcBSPAkBqqxOSpQSguLAWIQyJSMmJo5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":542995},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"8c5a2cd8f7c19180c828d94b92bca81fb2251c4c","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.4_1780135396463_0.8580788398176729","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"gctrl","version":"0.2.5","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.5","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"37fdc1f21ba14a76a9ff2c883dc74d90d7c30925","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.5.tgz","fileCount":32,"integrity":"sha512-QhArLQO1IopzK34YPpaIV7loy0TFaTn6HHRuxuIr14y3MvppJo1kmTR7ArkmE1NU57HRXkh6xLnVUf0cQGx3FA==","signatures":[{"sig":"MEQCIBAZOQt5UZdjhh5Dctt3kvZo+t3W0BUBacZ/1b8+u9SDAiAssbP5PQqc0SvPz/PS6IgNvN2fmAVSVtdrEsOzWpkXHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423951},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"12f7e2e84fa512c04d98ad72d1a72ead84ac7be1","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.5_1780475114225_0.4200728945237686","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"gctrl","version":"0.2.6","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.6","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"dd9577e2213722f82ce1a203e7af234430353891","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.6.tgz","fileCount":34,"integrity":"sha512-KzGFT1VUTX8X5wusJtJH5SrGhVb4s5pLxEhOW6GYf5TS1E+tFJylcgYbzsLFz50M7p4Hn7sqESrspvG36y5V7w==","signatures":[{"sig":"MEUCIF1fNNu7Y2coEXMXov+NBOsro1uuNTKshEKnpG8ZhavIAiEAzNa8JhU3A4JB5s8Na12pzWe1EAlltW9YEnCiNTKgmRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442742},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"cb4f45862446f0bd0577151cd27bb8f27e9a45b4","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.6_1780552679014_0.3128989592738436","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"gctrl","version":"0.2.7","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.7","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"15fe010978896e7baa1be9cc217512600a2f63cd","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.7.tgz","fileCount":34,"integrity":"sha512-wJBKwWCrVO3VkhBbAXl1JzsTiXylv4xojgGbGPa8rQbGkR1FMKjh2AXgofU6E1ZjCc79Rt8ZQFo4F3mDYFanCw==","signatures":[{"sig":"MEQCIHg4/9q6XeBXNL2EruBP8WNO/886uHfEgtXhE16we1GCAiBuC0Y86FXBiGMe8g9HQ1o/obn4xQxOUIU9VjTQY4V4nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443587},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"e67132f03af3d14b9e44eebf97af1cb1525d45e1","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck && bun run typecheck:scripts","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit","capture:codex":"bun run scripts/capture-codex.ts","typecheck:scripts":"bun x tsc --noEmit --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck --types bun scripts/capture-codex.ts scripts/codex-capture/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.7_1780926694160_0.1346943583542619","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"gctrl","version":"0.2.8","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.8","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"e8345ddd4ae7dcbba38d7ec8ae23729f19ad29dc","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.8.tgz","fileCount":59,"integrity":"sha512-SHAr+Q22Vj+9rFpSE26yMS3WOPvWhPUbinJ2dx7/uXusM0HAF6GpGXw3eYi4GT+pTw9Khh4IHlAnqZFaQE8d1w==","signatures":[{"sig":"MEUCIGO4SveLtU76KcTR5lsESUAZPhcuPVAPnClv9KRiUohAAiEA4gmx8dw8ANqRH5FjDhed6NnM1U9qtpuJM0K9ygdKCmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":572514},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"01af737e48c59963fbda7d0734d567ef7e62b726","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck && bun run typecheck:scripts","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit","capture:codex":"bun run scripts/capture-codex.ts","typecheck:scripts":"bun x tsc --noEmit --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck --types bun scripts/capture-codex.ts scripts/codex-capture/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.8_1781542970198_0.6715991704766533","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"gctrl","version":"0.2.9","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.9","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"59538a692e98c61091c60b61debc8f52515461a6","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.9.tgz","fileCount":34,"integrity":"sha512-2MjZqUxe0mT+/RTTs/OJ3q1sm6WNPb7OJ/o14jjRM98Jq13pVk3PSmyAQ23JJ/Db9rT2bBrHkKAG9plwVGHWIA==","signatures":[{"sig":"MEYCIQCZzrl9t38CbXgVfJpKWsxFnCxO9HGOiNTRHmSKow6eCQIhAL/XBgimBkedyOH1Gk8Qp+8oku5eXiLxHIp1sxUj7LQ0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":449072},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"93808951d64e99b3528567d84b5c49180dfec53b","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck && bun run typecheck:scripts","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit","capture:codex":"bun run scripts/capture-codex.ts","typecheck:scripts":"bun x tsc --noEmit --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck --types bun scripts/capture-codex.ts scripts/codex-capture/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.9_1781623811378_0.25141175500094026","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"gctrl","version":"0.2.10","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.2.10","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"0e4246fc8316db766c5c0d72c4f86c616ff3dcb3","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.2.10.tgz","fileCount":59,"integrity":"sha512-aGW0I6yeVo9TVToHi6mr3QynickF2buL5t/bEYWFvL7D3VwTKg2O1/POudvMLuQIixIJNPPKQywXmTj2b4A//g==","signatures":[{"sig":"MEQCIDYgNttXnyeOlggTd2aMyouX9AQQpPRpbq7tkjgZCwbAAiAlQZ9LS1fw6l3EsQM/daLKsGudv5bqH0J8IZJVlIeEYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":584056},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"9f81eb71aed7f9be07d5d7959e3473b7fac38baf","scripts":{"dev":"bun run --watch src/index.ts","lint":"bunx @biomejs/biome check src","build":"bun x tsc --project tsconfig.build.json","check":"bun run lint && bun run typecheck && bun run typecheck:scripts","start":"bun run src/index.ts","prepack":"bun run build","typecheck":"bun x tsc --noEmit","capture:codex":"bun run scripts/capture-codex.ts","bench:opencode":"bun run bench/opencode-query-bench.ts","typecheck:scripts":"bun x tsc --noEmit --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck --types bun scripts/capture-codex.ts scripts/codex-capture/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"10.9.4","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"22.22.1","dependencies":{"bun":"*","@opentui/core":"*"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"*"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.2.10_1781852013476_0.34437518779064313","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"gctrl","version":"0.3.0","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.3.0","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"9ec243b55f5b4989d92f70dab0576a7b520072ef","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.3.0.tgz","fileCount":9,"integrity":"sha512-Z15KuCQZbZRsFaOxAltrtjK9Ce1Wlo+0nZyPeEC/eZHJrg8iSjarTM107sV3ULnHcxsP3u8v5mXGnkkWB8jmsA==","signatures":[{"sig":"MEUCIAxRczya1IOWjoP9JKvXTZX+4Ez9oCXPjqD5JkrisBycAiEAnMH3XNyLEVmQqmti6RdeVS0tMUnCp1owkL4QksJtc+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419402},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"67ad4e95870c5a67633e90134c162a669c9315a1","scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","prepack":"pnpm run build","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.6.2","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"24.13.0","dependencies":{"koffi":"3.0.2","@opentui/core":"0.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.1","devDependencies":{"tsx":"4.22.4","vitest":"4.1.9","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"26.0.0","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.3.0_1782379906051_0.5446058578266035","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"gctrl","version":"0.3.1","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.3.1","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"8b5e93b377ff38cd2da60607e8523386679bec07","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.3.1.tgz","fileCount":9,"integrity":"sha512-rhgFLsB9tb/i0bGBYVEc0+slr6CHxWBCGWY1QPDKAkzU29LLI2dcDa/72JXtKBAsldy3oEsJ7T+YXC1s+9/syw==","signatures":[{"sig":"MEQCICZ6pq/iIT2gkHL7XkuQRC8S2dAKIoc511njL6fSHJdiAiAI6+wMtFPX6sSg4heHbPs9Gr3QsMlUN8QGB2gagD2vXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420130},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"029ac521ece5e2d72ec514d6fb2ec379288ba2cd","scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","prepack":"pnpm run build","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.17.0","description":"Real-time OpenCode, Codex, and Claude Code session monitor CLI","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"3.0.2","@opentui/core":"0.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.1","devDependencies":{"tsx":"4.22.4","vitest":"4.1.9","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"26.0.0","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.3.1_1782404760055_0.1459310592249634","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"gctrl","version":"0.4.0","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","mission-control","mc","mctrl","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.4.0","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"f91b4bbd57f2bfe91f2b8f83bf5f97deacaec6f6","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.4.0.tgz","fileCount":9,"integrity":"sha512-f7Qw+ruOgO9FjICV+l9KlLrw53sAKEj5bSKyWyJ4chFc5fL26LaHLXJhhEw2JegF6H6Gsgepywv6gVBPL+kzdg==","signatures":[{"sig":"MEQCIHiSz2oswb2bLT+rO4/5iQlxMaUFvB8i+O5vqolpKmUbAiBajY5/NSlwZMrjJH4F4AGfveCOkyMbn4TBVdtzd+cguA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":535920},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"c6249cbef0f782f4776d75a05f9c3b1ef41afdf4","scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","prepack":"pnpm run build","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.17.0","description":"Real-time OpenCode, Codex, Claude Code, and Mission Control session monitor CLI","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"3.0.2","@opentui/core":"0.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.1","devDependencies":{"tsx":"4.22.4","vitest":"4.1.9","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"26.0.0","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.4.0_1784184932209_0.48602517860309313","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"gctrl","version":"0.4.1","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","mission-control","mc","mctrl","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.4.1","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"ec0370e723c6f9fce368f4bb5f6ea2b74d5ef633","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.4.1.tgz","fileCount":9,"integrity":"sha512-oMM0acymMnS/mGMxAybgY2KBWr9njy23B5rTpcUeVW8gS1Ex9e6mGd30/EztZUjMG3q3X7cvrNGpiTSuGxWmGA==","signatures":[{"sig":"MEQCICIbYqmFa7p+ksNZdVu+lkxrxTT2k/pcZpNGQB1KUKs2AiAp60+AB+6GpY3yygTTh3EAioyhoIBni0suDmx5Vk0sEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":537921},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"edd65f676dd3495ae69a4e6416a53c8251e4b9e4","scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","prepack":"pnpm run build","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.17.0","description":"Real-time OpenCode, Codex, Claude Code, and Mission Control session monitor CLI","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"3.0.2","@opentui/core":"0.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.1","devDependencies":{"tsx":"4.22.4","vitest":"4.1.9","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"26.0.0","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.4.1_1784191497236_0.5977418053023031","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"gctrl","version":"0.4.2","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","mission-control","mc","mctrl","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.4.2","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"de0138d9f2a0384ca463d785a313dd9a1c6612e5","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.4.2.tgz","fileCount":9,"integrity":"sha512-2ujIcS1QNPtGL8bY3epx6aOW4DlG0LX5zs3DzFHISL97oAunK5cBwZrqjyOF/CKPGVCr+jeJVel9m4KLgF23DQ==","signatures":[{"sig":"MEQCIG2epumP+Ib4M+aH0zkusYDfWQ9QXB6nWmbClV/9pRe/AiA71SFOT04rskt9uMqtM7lpyqUDyt6qJveL2lmF5SKZrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":539740},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"69bc3a2465d3bc0893833ac4fe1bafbbfd212845","scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","prepack":"pnpm run build","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.17.0","description":"Real-time OpenCode, Codex, Claude Code, and Mission Control session monitor CLI","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"3.0.2","@opentui/core":"0.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.1","devDependencies":{"tsx":"4.22.4","vitest":"4.1.9","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"26.0.0","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.4.2_1784212171762_0.3275733363086466","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"gctrl","version":"0.4.4","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","mission-control","mc","mctrl","anthropic","openai","multi-source"],"author":"NoizBuster <noizbuster@noizbuster.com>","license":"MIT","_id":"gctrl@0.4.4","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"bin":{"gctrl":"./bin/gctrl.js"},"dist":{"shasum":"5bca1834cb34851efd9f879ff95cb821c34db95d","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.4.4.tgz","fileCount":9,"integrity":"sha512-Z5U3cWxaEJlZHRytGmfy+mWTxZuukFU+ekhW/5fJw9TOGmqZP692mRc2egB2ML5uJ0Ytz+vene7AWbKCh/IAUA==","signatures":[{"sig":"MEQCIAvW2bPLX7gcCAJveQB4zhTxdIoMC+p5l6jJ4e7oSfuuAiBz156dzg9vhUNrOijVrY0kLyvpcyz25DDXJiU4d81Zqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556692},"type":"module","engines":{"node":">=22.13.0"},"scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"https://github.com/noizbuster/ground-control","type":"git"},"description":"Real-time OpenCode, Codex, Claude Code, and Mission Control session monitor CLI","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"3.0.2","@opentui/core":"0.4.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","vitest":"4.1.9","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"26.0.0","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.4.4_1784477612408_0.8527118121550974","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"gctrl","version":"0.5.0","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","mission-control","mc","mctrl","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.5.0","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"d9c5a875ae713ad3b75fe6c337d640fadd542904","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.5.0.tgz","fileCount":9,"integrity":"sha512-vOOlpKzlk3scn07kJ92SsLTmz9XKuelYdLTOYrKkG2GlsTsBUHag1F17HiOZY0lOYvrLJrEKtfsFy6mVK4tYdQ==","signatures":[{"sig":"MEYCIQDaGss9eS44Q1mOnzggiP9pJzTKYvHtFBIr13sQXQrgXQIhAJTHswZypYEGdLvfm4ExPey5PW25Cqta05/OatAdpapn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":561613},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"b774a5687ffb72a8ab015d65c9f4036eb33f4226","scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","prepack":"pnpm run build","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.17.0","description":"Real-time OpenCode, Codex, Claude Code, and Mission Control session monitor CLI","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"3.1.2","@opentui/core":"0.4.5"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.17.0","devDependencies":{"tsx":"4.23.1","vitest":"4.1.10","esbuild":"^0.28.1","typescript":"^7.0.2","@types/node":"26.1.1","@biomejs/biome":"2.5.5"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.5.0_1784985516087_0.12523185903572776","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"gctrl","version":"0.6.0","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","mission-control","mc","mctrl","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","_id":"gctrl@0.6.0","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"homepage":"https://github.com/noizbuster/ground-control#readme","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"bin":{"gctrl":"bin/gctrl.js"},"dist":{"shasum":"3b7ea09dd423e5606b5c66cf909c11e7212af63b","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.6.0.tgz","fileCount":10,"integrity":"sha512-gjO/ubkaIGGliBCswqF7/2HHW2LzxztwfOxt2NW5yNHbLsZfbzdkOSwWfJuaSka8q+ilZxw950mEuDdUD05uYA==","signatures":[{"sig":"MEYCIQDv7lPqO8bnYBHWiPEACDbmxTnkG+mxefj2yTx94HmWpwIhAJ0CZLkJdbT1gANClBXQF3PpHM3SwHjqN3fk5aYND70t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":607983},"type":"module","engines":{"node":">=22.13.0"},"gitHead":"840996fb70414520bf83ec7474f1aecf26b6da6d","scripts":{"dev":"node scripts/dev.mjs","lint":"biome check src","test":"vitest run","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","check":"pnpm run lint && pnpm run typecheck","start":"node bin/gctrl.js","prepack":"pnpm run build","typecheck":"tsc --noEmit","bench:opencode":"tsx bench/opencode-query-bench.ts","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts"},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"repository":{"url":"git+https://github.com/noizbuster/ground-control.git","type":"git"},"_npmVersion":"11.17.0","description":"Real-time OpenCode, Codex, Claude Code, and Mission Control session monitor CLI","directories":{},"_nodeVersion":"26.4.0","dependencies":{"koffi":"3.1.2","@opentui/core":"0.4.5"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.17.0","devDependencies":{"tsx":"4.23.1","vitest":"4.1.10","esbuild":"^0.28.1","typescript":"^7.0.2","@types/node":"26.1.1","@biomejs/biome":"2.5.5"},"_npmOperationalInternal":{"tmp":"tmp/gctrl_0.6.0_1786286470794_0.07668742120518379","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"gctrl","version":"0.7.0","description":"Real-time coding-agent session monitor for OpenCode, Codex, Claude Code, Pi, omp, Gajae Code, and Mission Control","type":"module","scripts":{"start":"node bin/gctrl.js","dev":"node scripts/dev.mjs","typecheck":"tsc --noEmit","typecheck:scripts":"tsc --noEmit --ignoreConfig --types node --target ES2022 --module ESNext --moduleResolution Bundler --strict --skipLibCheck scripts/**/*.ts","build":"node scripts/build.mjs && node scripts/copy-hooks.mjs","lint":"biome check src","check":"pnpm run lint && pnpm run typecheck","bench:opencode":"tsx bench/opencode-query-bench.ts","prepack":"pnpm run build","test":"vitest run"},"bin":{"gctrl":"bin/gctrl.js"},"keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","pi-coding-agent","omp","gajae-code","gjc","mission-control","mc","mctrl","anthropic","openai","multi-source"],"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/noizbuster/ground-control.git"},"dependencies":{"@opentui/core":"0.4.5","koffi":"3.1.2"},"devDependencies":{"@biomejs/biome":"2.5.5","@types/node":"26.1.1","esbuild":"^0.28.1","tsx":"4.23.1","typescript":"^7.0.2","vitest":"4.1.10"},"engines":{"node":">=22.13.0"},"packageManager":"pnpm@11.17.0","gitHead":"8f77417ad22ba3b697192bad2490c3b99286a00f","_id":"gctrl@0.7.0","bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"homepage":"https://github.com/noizbuster/ground-control#readme","_nodeVersion":"26.4.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-TIePKh8WlGhCFLWSQNwVHBtE9F2RlZ1wtwh8oN5ZpGHR6wscUosJi46RyvcBAwjD91Ka7Fu5n7VIZFY5lUcqLg==","shasum":"10f0f05ca98a497a94be6ca1301731fefd30cf1e","tarball":"https://registry.npmjs.org/gctrl/-/gctrl-0.7.0.tgz","fileCount":10,"unpackedSize":639809,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHPLMXxrBssmJ7/45ma0ZfRO6mE22kju8MkQdXk5pNxuAiAXKt4tb9SJ1ZmG4TGMoo6PzVBDMiRx9MXkcC1NqVqcBQ=="}]},"_npmUser":{"name":"noizbuster","email":"noizbuster@noizbuster.com"},"directories":{},"maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gctrl_0.7.0_1787145717541_0.22657924159218257"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-16T14:50:43.678Z","modified":"2026-08-19T13:21:57.882Z","0.1.0":"2026-03-16T14:50:43.941Z","0.1.1":"2026-03-16T14:51:43.524Z","0.1.2":"2026-03-20T06:00:46.614Z","0.1.3":"2026-03-20T14:49:34.129Z","0.1.4":"2026-03-20T15:01:48.730Z","0.1.5":"2026-03-20T15:36:32.860Z","0.1.6":"2026-03-20T15:39:09.031Z","0.1.7":"2026-03-20T15:43:43.923Z","0.1.8":"2026-03-22T13:42:40.419Z","0.1.9":"2026-03-26T15:36:29.746Z","0.1.10":"2026-03-27T03:03:52.088Z","0.2.0":"2026-04-05T18:37:20.159Z","0.2.1":"2026-04-13T04:11:45.159Z","0.2.2":"2026-04-22T09:23:00.632Z","0.2.3":"2026-04-23T12:30:58.490Z","0.2.4":"2026-05-30T10:03:16.607Z","0.2.5":"2026-06-03T08:25:14.378Z","0.2.6":"2026-06-04T05:57:59.179Z","0.2.7":"2026-06-08T13:51:34.332Z","0.2.8":"2026-06-15T17:02:50.339Z","0.2.9":"2026-06-16T15:30:11.512Z","0.2.10":"2026-06-19T06:53:33.612Z","0.3.0":"2026-06-25T09:31:46.202Z","0.3.1":"2026-06-25T16:26:00.177Z","0.4.0":"2026-07-16T06:55:32.386Z","0.4.1":"2026-07-16T08:44:57.390Z","0.4.2":"2026-07-16T14:29:31.889Z","0.4.4":"2026-07-19T16:13:32.551Z","0.5.0":"2026-07-25T13:18:36.229Z","0.6.0":"2026-08-09T14:41:10.953Z","0.7.0":"2026-08-19T13:21:57.682Z"},"bugs":{"url":"https://github.com/noizbuster/ground-control/issues"},"author":{"name":"NoizBuster","email":"noizbuster@noizbuster.com"},"license":"MIT","homepage":"https://github.com/noizbuster/ground-control#readme","keywords":["opencode","oh-my-opencode","tui","node","opentui","monitor","codex","claude-code","pi-coding-agent","omp","gajae-code","gjc","mission-control","mc","mctrl","anthropic","openai","multi-source"],"repository":{"type":"git","url":"git+https://github.com/noizbuster/ground-control.git"},"description":"Real-time coding-agent session monitor for OpenCode, Codex, Claude Code, Pi, omp, Gajae Code, and Mission Control","maintainers":[{"name":"noizbuster","email":"noizbuster@noizbuster.com"}],"readme":"<p align=\"center\">\n  <img src=\"./banner.png\" alt=\"Ground Control banner\" width=\"50%\" />\n</p>\n\n# Ground Control\n\n`gctrl` is a terminal TUI for monitoring OpenCode, Codex, Claude Code, Pi, omp, Gajae Code (`gjc`), and Mission Control sessions in real time. It presents session status, active agents, subagent activity, richer source metadata, and recent updates in one card-based interface, while also supporting source-native session deletion flows where the upstream CLI exposes them and conservative local cleanup for file-backed sources.\n\n## Quick Start\n\nMake sure these are available before running `gctrl`:\n\n- Node.js 24 or later\n- OpenCode, Codex, Claude Code, Pi, omp, Gajae Code, and/or Mission Control installed on the same machine\n- `~/.local/share/opencode/opencode.db` exists for OpenCode monitoring\n- `~/.codex/state_*.sqlite` and `~/.codex/sessions/` exist for Codex monitoring\n- `~/.claude/projects/` and/or `~/.claude/sessions/` exist for Claude Code monitoring\n- `~/.pi/agent/sessions/` exists for Pi monitoring\n- `~/.omp/agent/sessions/` exists for omp monitoring\n- `~/.gjc/agent/sessions/` exists for Gajae Code monitoring\n- `~/.local/share/mission-control/mission-control.db` exists for Mission Control monitoring\n\n### Run with `npx`\n\n```bash\nnpx gctrl\n```\n\n<p align=\"center\">\n  <img src=\"./demo.png\" alt=\"demo image of gctrl\" width=\"75%\" />\n</p>\n\n<p align=\"center\">\n  <img src=\"./demo2.png\" alt=\"demo image of gctrl\" width=\"75%\" />\n</p>\n\n## Overview\n\n- Displays OpenCode, Codex, Claude Code, Pi, omp, Gajae Code, and Mission Control sessions in a live terminal list\n- Refreshes automatically every 2 seconds\n- Shows status, source, project label, session ID, update time, and richer source metadata\n- Supports source-aware actions, copy ID, refresh, and keyboard navigation\n\n## Usage\n\nAfter launch, use these shortcuts to navigate and control the monitor:\n\n| Key | Action |\n| --- | --- |\n| `h` / `j` / `k` / `l` / `←` / `↑` / `↓` / `→` | Move selection in the session grid |\n| `PgUp` / `PgDn` | Jump selection by a page of rows in the session grid (or scroll detail/hierarchy by one page) |\n| `j` / `k` / `↑` / `↓` (detail focus) | Scroll session detail |\n| `Tab` | Switch focus between grid and detail pane (when sideview is enabled) |\n| `Enter` | Open the selected session detail view |\n| `e` / `p` | Toggle sideview layout |\n| `f` | Cycle session filter mode (`active → recent → busy → all`) |\n| `s` | Cycle sort mode (`status → update → create`) |\n| `c` | Open hierarchy view |\n| `t` | Open hierarchy directly in timeline view |\n| `a` | Attach to the selected session |\n| `i` | Copy the selected session ID |\n| `Ctrl+K` | Stop stuck/active sessions for the selection (children +, for OpenCode/Codex, a non-terminal selected parent). Graceful stop first; delete fallback on failure where supported |\n| `d` | Request delete for the selected session |\n| `y` / `n` | Confirm or cancel delete prompt |\n| `r` | Refresh immediately |\n| `Ctrl+S` | Toggle session stats modal (per-source and per-status breakdown) |\n| `Esc` / `q` | Cancel prompt, close current view, or quit from the main view |\n| `Ctrl+C` | Quit immediately |\n\n### Stop Stuck/Active Sessions (`Ctrl+K`)\n\nPress `Ctrl+K` from the main grid, detail, or sideview to stop stuck or still-active sessions under the selection. `Shift+K` remains accepted for existing users.\n\n- **OpenCode / Codex**: stops every non-terminal child/descendant, and also stops the selected parent when the parent itself is non-terminal (running/waiting/pending/unknown/idle). This covers unfinished compaction, zombie busy roots, and mid-stream hangs.\n- **Mission Control**: stops abortable children only. The selected Mission Control parent is never stopped (existing contract).\n- **omp / Gajae Code**: on Linux, sends `SIGINT` to every non-terminal child/descendant whose running `omp` or `gjc` process explicitly resumed the exact session JSONL path. The selected root is not signaled because a reliable process identity requires an explicit `--resume` path. If no exact process match is found, session history is left untouched.\n\nCodex, Claude Code, Pi, omp, and Gajae Code sessions support attach/inspect/copy/hierarchy/delete flows. Session-stop is supported for OpenCode, Codex, omp, Gajae Code, and Mission Control sessions. Codex attach uses `codex resume <session-id>`, Claude Code attach uses `claude --resume <session-id>`, Pi attach uses `pi --session <session-id>` for roots and the exact session JSONL path for child artifacts, omp attach uses `omp --resume <session-jsonl-path>`, and Gajae Code attach uses `gjc --resume <session-jsonl-path>`; both harnesses fall back to the session ID when no path is available. Attach falls back to the current monitor directory if the original session directory no longer exists. Claude Code subagent attach resolves back to the root session because the upstream CLI resumes root conversations by ID. Mission Control attach uses `mc --session <session-id>` (`mctrl` is honored as a legacy alias/fallback).\n\nOpenCode uses a three-stage stop flow per target:\n\n1. **Abort API**: `POST /session/<id>/abort` against discovered local OpenCode HTTP servers, then (if needed) a short-lived `opencode serve`.\n2. **Stop message**: if abort is unavailable or fails, send `opencode run --session <id> stop` (user \"stop\" turn).\n3. **Delete fallback**: if both fail, a per-item confirmation dialog appears where you can choose to delete (`y`), skip (`n`), or cancel all (`Esc`/`q`).\n\nThere is no separate OpenCode HTTP \"stop\" endpoint in current CLI builds — only abort.\n\nMission Control uses one awaited `mc session stop <parent> --child-only` command with `MCTRL_DATA_DIR` set to the selected database's parent. `mctrl` is used only when `mc` is unavailable. Exit `0` completes without a fallback. Exit `2`, a launch failure, a refresh failure, or an unstable hierarchy never opens a fallback. Only exit `1` triggers a fresh snapshot of still-abortable descendants: missing or expired leases may enter confirmation; a live lease shows `Owner still active; retry stop`; unknown lease authority is no-delete. Before deletion, Ground Control takes a second snapshot and requires the same eligible members, raw statuses, lease safety, and tree tokens. Each confirmed minimal subtree root is deleted once with a non-force guarded command and its refreshed token. `Ctrl+K` never stops its selected Mission Control parent and never routes a Mission Control fallback through OpenCode.\n### Session Filter Modes (`f`)\n\n- `active`: non-completed sessions, plus externally attached completed sessions. Directory-count fallback is applied as **non-complete first**, and only remaining slots can surface latest completed sessions.\n- `recent`: everything visible in `active`, plus (1) the globally latest completed session and (2) each project's latest updated session.\n- `busy`: non-completed sessions only.\n- `all`: all sessions.\n\n### Hierarchy View (`c`)\n\nPress `c` on a selected session to open the agent hierarchy view, or press `t` to open it directly in timeline mode. This shows the session's subagent tree with status, timing, and metadata.\n\n| Key | Action |\n| --- | --- |\n| `Tab` | Cycle view mode (tree / timeline) |\n| `x` | Cycle info mode (standard / detailed) |\n| `f` | Cycle filter mode (latest / busy / all) |\n| `←` / `→` / `h` / `l` | Pan timeline (timeline mode only) |\n| `j` / `k` / `Up` / `Down` | Scroll |\n| `PgUp` / `PgDn` | Scroll by one page |\n| `Esc` / `q` | Close hierarchy view |\n\n## Requirements\n\n- Node.js 24+ is required for built-in `node:sqlite`.\n- The native TUI renderer uses a koffi-based FFI adapter (no manual flags needed).\n- The monitor reads OpenCode session data from `~/.local/share/opencode/opencode.db`.\n- The monitor reads Codex thread state from the newest `~/.codex/state_*.sqlite` file and enriches it with `~/.codex/sessions/**/*.jsonl`.\n- The monitor reads Claude Code session state from `~/.claude/sessions/*.json` and enriches it with `~/.claude/projects/**/*.jsonl`.\n- The monitor reads Pi JSONL sessions from `~/.pi/agent/sessions/**/*.jsonl`.\n- The monitor reads omp JSONL sessions from `~/.omp/agent/sessions/**/*.jsonl`.\n- The monitor reads Gajae Code JSONL sessions from `~/.gjc/agent/sessions/**/*.jsonl`, or `$XDG_DATA_HOME/gjc/sessions/**/*.jsonl` when Gajae Code uses its XDG data root.\n- The monitor reads Mission Control session state from the SQLite store at `~/.local/share/mission-control/mission-control.db`. If that database is missing or unreadable, Mission Control sessions are not shown.\n- Override the OpenCode database path with `GCTRL_DB_PATH=/custom/path/opencode.db`.\n- Override Codex paths with `GCTRL_CODEX_STATE_DB_PATH=/custom/path/state.sqlite`, `GCTRL_CODEX_SESSIONS_DIR=/custom/path/sessions`, `GCTRL_CODEX_ARCHIVED_SESSIONS_DIR=/custom/path/archived_sessions`, and `GCTRL_CODEX_SESSION_INDEX_PATH=/custom/path/session_index.jsonl`.\n- Override Claude Code paths with `GCTRL_CLAUDE_PROJECTS_DIR=/custom/path/projects` and `GCTRL_CLAUDE_SESSIONS_DIR=/custom/path/sessions`.\n- Override Pi sessions with `GCTRL_PI_SESSIONS_DIR=/custom/path/sessions`; `PI_CODING_AGENT_SESSION_DIR` and `PI_CODING_AGENT_DIR` are also honored.\n- Override omp sessions with `GCTRL_OMP_SESSIONS_DIR=/custom/path/sessions`; `PI_CODING_AGENT_DIR`, `PI_CONFIG_DIR`, and XDG omp candidates are also honored.\n- Override Gajae Code sessions with `GCTRL_GJC_SESSIONS_DIR=/custom/path/sessions`; `GJC_CODING_AGENT_DIR` and `GJC_CONFIG_DIR` are also honored. Ground Control does not use Gajae Code's legacy `PI_*` aliases for GJC discovery because those paths already identify Pi/omp sources.\n- Override the Mission Control SQLite database with `GCTRL_MC_DB_PATH=/custom/path/mission-control.db` (primary); `MCTRL_DATA_DIR=/custom/path` is also honored and resolves to `<MCTRL_DATA_DIR>/mission-control.db`, and `XDG_DATA_HOME` is honored for the default `~/.local/share/mission-control/mission-control.db` location.\n- Ground Control stores compact Pi/omp/Gajae Code/Codex summaries in `${XDG_CACHE_HOME:-~/.cache}/gctrl/session-summaries.sqlite` to accelerate later starts. The cache is pruned against live sessions, capped at 64 MiB, and recreated if corrupt. Override its location with `GCTRL_SESSION_SUMMARY_CACHE_PATH=/custom/path/session-summaries.sqlite`.\n- OpenCode attach/delete/child-abort actions use the `opencode` CLI.\n- Codex attach/delete/child-abort actions use the local `codex` CLI and app-server protocol.\n- Claude Code attach actions use the local `claude` CLI.\n- Pi attach actions use the local `pi` CLI; Pi delete removes the selected JSONL session and any loaded descendant JSONL sessions.\n- omp attach actions use the local `omp` CLI; omp delete removes the selected JSONL session, loaded descendant JSONL sessions, and sibling artifact directories, but not shared blob storage.\n- Gajae Code attach actions use the local `gjc` CLI. Delete performs conservative local cleanup of the selected JSONL transcript, loaded descendants, and sibling artifact directories without deleting the shared blob store; `gjc session remove` is not used because that command manages tagged tmux sessions, not transcripts.\n- Mission Control attach actions use the local `mc` CLI (`mctrl` is honored as a legacy alias/fallback). Mission Control delete removes a canonical descendant subtree and is destructive. Ground Control sends `mc session delete <id> --expected-tree-token <sha256>` only after the two-refresh confirmation flow; a changed tree or live lease refuses the non-force delete.\n- Codex delete uses the local `codex app-server` archive flow plus cleanup of archived rollout files and local index/state entries.\n- Claude Code delete intentionally refuses live sessions, then removes matching `projects/`, `file-history/`, `session-env/`, `tasks/`, and stale `sessions/*.json` artifacts from local `.claude/` storage. This follows the official `.claude` storage guidance: Claude Code does not expose a delete subcommand, but its local session data can be removed directly.\n- Non-interactive mode (missing TTY stdin/stdout) prints a tab-separated snapshot and exits.\n\n## Local Development\n\n```bash\npnpm install\npnpm dev\n```\n\nUseful scripts:\n\n```bash\npnpm start\npnpm dev\npnpm build\npnpm typecheck\npnpm lint\npnpm check\npnpm test\n```\n\n## Mission Control Paired Release\n\nMission Control session stop and Ground Control's Mission Control `K` path are a synchronized release pair. Ground Control uses `mc` first and falls back to the `mctrl` alias only when `mc` is unavailable. It does not inspect command versions, help text, or capabilities to select a behavior.\n\nThe current Linux implementation verification is local: the isolated cross-repository runner passed the five documented scenarios. The immutable-SHA Linux, macOS, and Windows workflow is a separate post-authorization release gate. No hosted run is claimed here; until explicit authorization produces hosted receipts, that gate is pending. See [`docs/mc-child-abort-release.md`](docs/mc-child-abort-release.md) for the operator and release contract.\n\n## Project Structure\n\n```text\nbin/          CLI wrapper\nsrc/db/       OpenCode + Codex + Claude Code + Pi/omp/GJC + Mission Control data adapters\nsrc/ui/       TUI components\nsrc/config/   color and agent configuration\nsrc/lib/      status detection logic\ndist/         compiled output\n```\n\n## Session Status Detection\n\nOpenCode status is derived from the latest message in the OpenCode SQLite database. The detection pipeline reads the most recent `message` row per session, parses its JSON `data` column, and applies status detectors in priority order. Codex status is mapped conservatively from thread/task events plus `thread_spawn_edges`, Claude Code status is mapped from local session registries plus JSONL conversation logs and subagent transcripts, and Pi/omp/Gajae Code status is mapped conservatively from JSONL message/model/thinking events. Richer raw detail is surfaced separately in the UI.\n\n### Status Priority\n\n| Priority | Status | Condition |\n|---|---|---|\n| 1 | `failed` | `finish === \"error\"` |\n| 2 | `waiting` | Question tool is running AND no user response yet (see Waiting Detection below) |\n| 3 | `completed` | `finish === \"stop\"` OR `time.completed` is a finite number |\n| 4 | `running` | Not failed, not waiting, not completed |\n| 5 | `unknown` | Message data is null, empty, or failed JSON parsing |\n\n### Finish Values\n\nThe `finish` field on the latest message indicates how the session step ended:\n\n| `finish` | `time.completed` | Detected Status | Display Label |\n|---|---|---|---|\n| `stop` | — | `completed` | Completed |\n| `tool-calls` | absent | `running` | Running |\n| `error` | — | `failed` | Failed |\n| `other` | present | `completed` | Completed (other) |\n| `length` | present | `completed` | Completed (length) |\n| `unknown` | present | `completed` | Completed (unknown) |\n| _undefined_ | absent | `running` | Running |\n| _no message_ | — | `unknown` | Unknown |\n\nWhen `finish` is `\"other\"`, `\"length\"`, or `\"unknown\"`, the status label appends the reason in parentheses — e.g. `Completed (other)`, `Completed (length)`.\n\n### Waiting Detection\n\nA session is `waiting` when the question tool is active and awaiting user input. This uses a secondary signal from the `part` table:\n\n1. Find the latest `part` row with `type === \"tool\"` and `tool === \"question\"` where `state.status === \"running\"`\n2. Compare its timestamp against the latest user message time\n3. If the question tool time is newer → `waiting` (overrides `running`)\n\nWaiting never overrides `failed` or `completed`.\n\n### Display Override: AWAITING SUBAGENT\n\nA `completed` root session that has running child sessions displays as **AWAITING SUBAGENT** instead of Completed. This reflects that the parent is technically done but work continues in subagents. The effective status becomes `running` for filtering and sorting purposes.\n\n### Hierarchy Filter: Latest Mode\n\nIn the hierarchy view's \"latest\" filter mode, subagent sessions are filtered as follows:\n\n- **Active** subagents (pending/running/waiting) are always shown\n- **AWAITING SUBAGENT** subagents (completed with active children) are always shown\n- **Terminal** subagents (completed/failed/unknown with no active children) — only the most recently updated one is shown\n\n## License\n\nMIT\n\n---\n\n<p align=\"center\">\n  <strong>Supervised by NoizBuster, Written by OpenCode</strong>\n</p>\n","readmeFilename":"README.md"}