typescript24 lines · 742 B
1import type { Mapping } from "./mapping.ts";
2import type { ScopeGuard } from "./scope.ts";
3
4export class SlackAdapter {
5 constructor(
6 private mapping: Mapping,
7 private guard: ScopeGuard,
8 ) {}
9
10 describe(): void {
11 const m = this.mapping;
12 console.log(`axiom ${m.agent} scope=${m.scope} platform=slack`);
13 for (const ch of m.channels) {
14 console.log(` ${ch.role.padEnd(12)} ${ch.direction.padEnd(4)} ${ch.id} ${ch.name}`);
15 }
16 console.log(`fan-out: ${m.channels.filter((c) => c.role === "room").length} room(s)`);
17 }
18
19 run(_collectSeconds: number): never {
20 for (const ch of this.mapping.channels) this.guard.require(ch.id, "listen");
21 throw new Error("live Slack requires SLACK_BOT_TOKEN");
22 }
23}
24