KeiSeiKit-1.0/_ts_packages/packages/mcp-server/src/adapters.ts
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

53 lines
1.5 KiB
TypeScript

// Register external API adapters (Telegram, Recall, Grok, Gmail, YouTube)
// dynamically IF the sibling packages are installed in the runtime. Each
// adapter exports `registerAdapter(register)` by convention.
import type { ToolDefinition } from "./tool-registry.js";
export type AdapterRegistrar = (tool: ToolDefinition) => void;
interface AdapterModule {
registerAdapter: (register: AdapterRegistrar) => void;
}
const ADAPTER_PACKAGES: readonly string[] = [
"@keisei/telegram-adapter",
"@keisei/recall-adapter",
"@keisei/grok-adapter",
"@keisei/gmail-adapter",
"@keisei/youtube-adapter",
];
export async function loadAllAdapters(
register: AdapterRegistrar,
logger: (msg: string) => void = () => {},
): Promise<{ loaded: string[]; skipped: string[] }> {
const loaded: string[] = [];
const skipped: string[] = [];
for (const pkg of ADAPTER_PACKAGES) {
const ok = await tryLoadOne(pkg, register, logger);
if (ok) loaded.push(pkg);
else skipped.push(pkg);
}
return { loaded, skipped };
}
async function tryLoadOne(
pkg: string,
register: AdapterRegistrar,
logger: (msg: string) => void,
): Promise<boolean> {
try {
const mod = (await import(pkg)) as AdapterModule;
if (typeof mod.registerAdapter !== "function") {
logger(`adapter ${pkg}: missing registerAdapter()`);
return false;
}
mod.registerAdapter(register);
return true;
} catch (err) {
const msg = err instanceof Error ? err.message : String(err);
logger(`adapter ${pkg}: not installed (${msg})`);
return false;
}
}