fix: wire v2 setup flow — barrel import, registration, verification

- Import channel barrel from src/index.ts so channel skills that
  uncomment lines in src/channels/index.ts actually execute
- Rewrite setup/register.ts to create v2 entities (agent_groups,
  messaging_groups, messaging_group_agents) in data/v2.db instead
  of v1's store/messages.db
- Fix setup/verify.ts to check v2 central DB for registered groups
- Add prominent "MESSAGE DROPPED" warnings in router when no agent
  groups are wired, with actionable guidance

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gavrielc
2026-04-09 12:23:23 +03:00
parent b76fd425c8
commit e7514edd35
6 changed files with 143 additions and 74 deletions

View File

@@ -11,7 +11,7 @@ import path from 'path';
import Database from 'better-sqlite3';
import { STORE_DIR } from '../src/config.js';
import { DATA_DIR } from '../src/config.js';
import { readEnvFile } from '../src/env.js';
import { log } from '../src/log.js';
import {
@@ -139,19 +139,23 @@ export async function run(_args: string[]): Promise<void> {
const configuredChannels = Object.keys(channelAuth);
const anyChannelConfigured = configuredChannels.length > 0;
// 5. Check registered groups (using better-sqlite3, not sqlite3 CLI)
// 5. Check registered groups in v2 central DB (agent_groups + messaging_group_agents)
let registeredGroups = 0;
const dbPath = path.join(STORE_DIR, 'messages.db');
const dbPath = path.join(DATA_DIR, 'v2.db');
if (fs.existsSync(dbPath)) {
try {
const db = new Database(dbPath, { readonly: true });
// Count agent groups that have at least one messaging group wired
const row = db
.prepare('SELECT COUNT(*) as count FROM registered_groups')
.prepare(
`SELECT COUNT(DISTINCT ag.id) as count FROM agent_groups ag
JOIN messaging_group_agents mga ON mga.agent_group_id = ag.id`,
)
.get() as { count: number };
registeredGroups = row.count;
db.close();
} catch {
// Table might not exist
// Table might not exist (DB not migrated yet)
}
}