Skip to content

Commit 1765387

Browse files
nickdirienzoclaude
andcommitted
refactor: remove dead code from direct dispatch migration
Remove orphaned artifacts after the MCP direct dispatch refactor: - Delete skill-inbound.ts (recreated by prettier hook) - Remove inbound validation, outbound jidPatterns, and outbox system - Remove router_state table, POLL_INTERVAL, backwards-compat re-exports - Simplify resolveSkillForJid to use MCP send_message capability Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8a1183f commit 1765387

9 files changed

Lines changed: 35 additions & 480 deletions

File tree

src/config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ const envConfig = readEnvFile(['ASSISTANT_NAME']);
1010

1111
export const ASSISTANT_NAME =
1212
process.env.ASSISTANT_NAME || envConfig.ASSISTANT_NAME || 'Andy';
13-
export const POLL_INTERVAL = 2000;
1413
export const SCHEDULER_POLL_INTERVAL = 60000;
1514

1615
// Absolute paths needed for container mounts

src/db.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@ function createSchema(database: Database.Database): void {
3939
);
4040
CREATE INDEX IF NOT EXISTS idx_task_run_logs ON task_run_logs(task_id, run_at);
4141
42-
CREATE TABLE IF NOT EXISTS router_state (
43-
key TEXT PRIMARY KEY,
44-
value TEXT NOT NULL
45-
);
4642
CREATE TABLE IF NOT EXISTS sessions (
4743
group_folder TEXT PRIMARY KEY,
4844
session_id TEXT NOT NULL
@@ -249,21 +245,6 @@ export function logTaskRun(log: TaskRunLog): void {
249245
);
250246
}
251247

252-
// --- Router state accessors ---
253-
254-
export function getRouterState(key: string): string | undefined {
255-
const row = db
256-
.prepare('SELECT value FROM router_state WHERE key = ?')
257-
.get(key) as { value: string } | undefined;
258-
return row?.value;
259-
}
260-
261-
export function setRouterState(key: string, value: string): void {
262-
db.prepare(
263-
'INSERT OR REPLACE INTO router_state (key, value) VALUES (?, ?)',
264-
).run(key, value);
265-
}
266-
267248
// --- Session accessors ---
268249

269250
export function getSession(groupFolder: string): string | undefined {
@@ -499,9 +480,6 @@ function migrateJsonState(): void {
499480
}
500481
};
501482

502-
// Migrate router_state.json (consume the file even if we no longer use cursor state)
503-
migrateFile('router_state.json');
504-
505483
// Migrate sessions.json
506484
const sessions = migrateFile('sessions.json') as Record<
507485
string,

src/index.ts

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import { GroupQueue } from './group-queue.js';
3333
import { resolveGroupFolderPath } from './group-folder.js';
3434
import { startIpcWatcher } from './ipc.js';
3535
import { formatMessages, formatOutbound } from './router.js';
36-
import { writeOutboxEvent } from './outbox.js';
3736
import { loadSkills, resolveSkillForJid } from './skill-registry.js';
3837
import { startSchedulerLoop } from './task-scheduler.js';
3938
import {
@@ -44,9 +43,6 @@ import {
4443
import { LoadedSkill, NewMessage, RegisteredGroup } from './types.js';
4544
import { logger } from './logger.js';
4645

47-
// Re-export for backwards compatibility during refactor
48-
export { escapeXml, formatMessages } from './router.js';
49-
5046
let sessions: Record<string, string> = {};
5147
let registeredGroups: Record<string, RegisteredGroup> = {};
5248

@@ -60,9 +56,7 @@ let skills: LoadedSkill[] = [];
6056
const pendingMessages = new Map<string, NewMessage[]>();
6157

6258
/**
63-
* Send a message to a JID via the MCP bridge or skill outbox.
64-
* MCP skills with send_message are called directly via the bridge.
65-
* Legacy handler-based skills use the file-based outbox.
59+
* Send a message to a JID via the MCP bridge.
6660
*/
6761
async function sendToJid(jid: string, text: string): Promise<void> {
6862
const skillName = resolveSkillForJid(skills, jid);
@@ -71,27 +65,16 @@ async function sendToJid(jid: string, text: string): Promise<void> {
7165
return;
7266
}
7367

74-
// Try MCP bridge first (for MCP-based skills like WhatsApp)
7568
const skill = skills.find((s) => s.manifest.name === skillName);
7669
if (skill?.manifest.mcp && skill.manifest.scopeTemplate?.send_message) {
7770
const sent = await callBridgeTool(skillName, 'send_message', {
7871
recipient: jid,
7972
message: text,
8073
});
8174
if (sent) return;
82-
logger.warn(
83-
{ jid, skillName },
84-
'MCP bridge send failed, trying outbox fallback',
85-
);
8675
}
8776

88-
// Fallback: file-based outbox for handler-based skills
89-
writeOutboxEvent(skillName, {
90-
type: 'message',
91-
jid,
92-
text,
93-
timestamp: new Date().toISOString(),
94-
});
77+
logger.warn({ jid, skillName }, 'Failed to send message via MCP bridge');
9578
}
9679

9780
/**
@@ -463,7 +446,6 @@ async function main(): Promise<void> {
463446
sendMessage: (jid, text) => sendToJid(jid, text),
464447
registeredGroups: () => registeredGroups,
465448
registerGroup,
466-
resolveSkillForJid: (jid) => resolveSkillForJid(skills, jid),
467449
getAvailableGroups,
468450
writeGroupsSnapshot: (gf, im, ag, rj) =>
469451
writeGroupsSnapshot(gf, im, ag, rj),

src/ipc.ts

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,13 @@ import {
2020
} from './db.js';
2121
import { isValidGroupFolder } from './group-folder.js';
2222
import { logger } from './logger.js';
23-
import { writeOutboxEvent } from './outbox.js';
2423
import { RegisteredGroup } from './types.js';
2524

2625
export interface IpcDeps {
2726
sendMessage: (jid: string, text: string) => Promise<void>;
2827
registeredGroups: () => Record<string, RegisteredGroup>;
2928
registerGroup: (jid: string, group: RegisteredGroup) => void;
3029
syncGroupMetadata?: (force: boolean) => Promise<void>;
31-
resolveSkillForJid?: (jid: string) => string | undefined;
3230
getAvailableGroups: () => AvailableGroup[];
3331
writeGroupsSnapshot: (
3432
groupFolder: string,
@@ -91,22 +89,10 @@ export function startIpcWatcher(deps: IpcDeps): void {
9189
try {
9290
await deps.sendMessage(data.chatJid, data.text);
9391
} catch {
94-
// No channel owns this JID — try skill outbox routing
95-
const skillName = deps.resolveSkillForJid?.(data.chatJid);
96-
if (skillName) {
97-
writeOutboxEvent(skillName, {
98-
type: 'message',
99-
jid: data.chatJid,
100-
text: data.text,
101-
sender: data.sender,
102-
timestamp: new Date().toISOString(),
103-
});
104-
} else {
105-
logger.warn(
106-
{ chatJid: data.chatJid, sourceGroup },
107-
'No channel or skill for JID',
108-
);
109-
}
92+
logger.warn(
93+
{ chatJid: data.chatJid, sourceGroup },
94+
'Failed to send IPC message',
95+
);
11096
}
11197
logger.info(
11298
{ chatJid: data.chatJid, sourceGroup },

src/outbox.test.ts

Lines changed: 0 additions & 118 deletions
This file was deleted.

src/outbox.ts

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)