1
import type { Mapping } from "./mapping.ts";2
import type { ScopeGuard } from "./scope.ts";3
4
export 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