feat: unify 3 bot services into single process

- Add UNIFIED_MODE flag (default on, disable with UNIFIED_MODE=0)
- Register all 3 Discord bots in one process (claude, codex, review)
- Load all registered groups regardless of agent_type (codex/owner priority)
- Start credential proxy and container cleanup at unified startup
- shouldServiceProcessChat returns true in unified mode
- Add findChannelByName for role-based response routing
- Backward compatible: UNIFIED_MODE=0 restores per-service behavior
This commit is contained in:
Eyejoker
2026-03-29 18:22:57 +09:00
parent fc9f2867b9
commit d01f98bd61
20 changed files with 118 additions and 759 deletions

View File

@@ -63,7 +63,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -129,8 +129,7 @@ describe('paired workspace manager', () => {
db.getPairedWorkspace('paired-task-1', 'reviewer')?.snapshot_refreshed_at,
).toBeTruthy();
expect(
db.getPairedWorkspace('paired-task-1', 'reviewer')
?.snapshot_ref,
db.getPairedWorkspace('paired-task-1', 'reviewer')?.snapshot_ref,
).toBeTruthy();
});
@@ -152,7 +151,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -204,7 +203,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -279,7 +278,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -353,7 +352,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -493,7 +492,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -554,7 +553,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -609,7 +608,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -670,7 +669,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -733,7 +732,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({
@@ -821,7 +820,7 @@ describe('paired workspace manager', () => {
chat_jid: 'dc:test',
group_folder: 'paired-room',
canonical_work_dir: canonicalDir,
created_at: now,
created_at: now,
updated_at: now,
});
db.createPairedTask({