From 981c80db1f3f1ee75c257e1979d832eedd547e4c Mon Sep 17 00:00:00 2001 From: chiznoir <25876626+chiznoir@users.noreply.github.com> Date: Wed, 12 Aug 2026 15:16:06 +0900 Subject: [PATCH 1/2] fix(gjc): restore Bun launcher session detection - Match the published @gajae-code/coding-agent package path. - Keep idle and transcript-backed GJC detection aligned. Tests: - TSX_TSCONFIG_PATH=server/tsconfig.json - npx tsx --test server/modules/providers/tests/live-sessions.service.test.ts --- server/modules/providers/services/live-sessions.service.ts | 6 ++++-- .../modules/providers/tests/live-sessions.service.test.ts | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/server/modules/providers/services/live-sessions.service.ts b/server/modules/providers/services/live-sessions.service.ts index 41d74f8..330476f 100644 --- a/server/modules/providers/services/live-sessions.service.ts +++ b/server/modules/providers/services/live-sessions.service.ts @@ -95,7 +95,8 @@ export function isGjcCommandLine(cmdline: string): boolean { const argv = cmdline.includes('\0') ? cmdline.split('\0').filter(Boolean) : cmdline.trim().split(/\s+/).filter(Boolean); - return argv.some((token) => basename(token) === 'gjc') || cmdline.includes('@chatmux-code/coding-agent'); + return argv.some((token) => basename(token) === 'gjc') + || cmdline.includes('@gajae-code/coding-agent'); } /** Roots gjc writes transcripts under; a live transcript sits in one of them. */ @@ -124,7 +125,8 @@ export function isGjcProcessArgs(args: string): boolean { return true; } if ((head === 'bun' || head === 'node') && tokens.length > 1) { - return basename(tokens[1]) === 'gjc' || tokens[1].includes('@chatmux-code/coding-agent'); + return basename(tokens[1]) === 'gjc' + || tokens[1].includes('@gajae-code/coding-agent'); } return false; } diff --git a/server/modules/providers/tests/live-sessions.service.test.ts b/server/modules/providers/tests/live-sessions.service.test.ts index 3e9b777..0a09159 100644 --- a/server/modules/providers/tests/live-sessions.service.test.ts +++ b/server/modules/providers/tests/live-sessions.service.test.ts @@ -795,7 +795,7 @@ test('findIdleGjcTmuxSessions: a stray "gjc" token deeper in argv never qualifie test('isGjcProcessArgs: argv-anchored — native, bun/node entry, package path; rejects lookalikes', () => { assert.equal(isGjcProcessArgs('/usr/local/bin/gjc --resume 019f'), true); assert.equal(isGjcProcessArgs('/home/u/.bun/bin/bun /home/u/.bun/bin/gjc'), true); - assert.equal(isGjcProcessArgs('/usr/bin/node /opt/node_modules/@chatmux-code/coding-agent/bin/gjc.js'), true); + assert.equal(isGjcProcessArgs('/usr/bin/node /opt/node_modules/@gajae-code/coding-agent/bin/gjc.js'), true); assert.equal(isGjcProcessArgs('man gjc'), false); assert.equal(isGjcProcessArgs('vi /tmp/notes/gjc'), false); assert.equal(isGjcProcessArgs('/usr/bin/node /srv/devserver/index.js'), false); @@ -1274,7 +1274,7 @@ test('isGjcCommandLine matches gjc as a native binary AND under bun/node interpr // bun launcher — real-world case where comm reads "bun" (the regression this fixes) assert.equal(isGjcCommandLine(cmdline('/home/u/.bun/bin/bun', '/home/u/.bun/bin/gjc', '--resume', '019f6f27')), true); // node launching the packaged entry (basename is gjc.js — matched via the package path) - assert.equal(isGjcCommandLine(cmdline('/usr/bin/node', '/opt/node_modules/@chatmux-code/coding-agent/bin/gjc.js', 'start')), true); + assert.equal(isGjcCommandLine(cmdline('/usr/bin/node', '/opt/node_modules/@gajae-code/coding-agent/bin/gjc.js', 'start')), true); // NOT gjc: the app server and its native watcher must never be mistaken for a session holder assert.equal(isGjcCommandLine(cmdline('/usr/bin/node', '/home/u/.chatmux/current/scripts/chatmux-runtime.mjs', 'start')), false); assert.equal(isGjcCommandLine(cmdline('/home/u/.chatmux/current/dist-native/chatmux-core', 'watch', '--root', '/home/u/.gjc/agent/sessions')), false); From b00e2442d19e20e7fa9e1d836787a5b8a5cfe981 Mon Sep 17 00:00:00 2001 From: Hako Date: Thu, 13 Aug 2026 14:31:45 +0900 Subject: [PATCH 2/2] fix(gjc): use the real package scope in the tmux e2e harness --- server/modules/providers/tests/support/tmux-e2e-harness.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/modules/providers/tests/support/tmux-e2e-harness.ts b/server/modules/providers/tests/support/tmux-e2e-harness.ts index eb5d80b..303e8fe 100644 --- a/server/modules/providers/tests/support/tmux-e2e-harness.ts +++ b/server/modules/providers/tests/support/tmux-e2e-harness.ts @@ -207,7 +207,7 @@ export async function createTmuxE2EHarness(): Promise { const npmPackageDirectory = path.join( workspace, 'node_modules', - '@chatmux-code', + '@gajae-code', 'coding-agent', ); const npmGjcPath = path.join(npmPackageDirectory, 'gjc');