* refactor: move Discord channel implementation to extensions/discord/src/ Move all Discord source files from src/discord/ to extensions/discord/src/, following the extension migration pattern. Source files in src/discord/ are replaced with re-export shims. Channel-plugin files from src/channels/plugins/*/discord* are similarly moved and shimmed. - Copy all .ts source files preserving subdirectory structure (monitor/, voice/) - Move channel-plugin files (actions, normalize, onboarding, outbound, status-issues) - Fix all relative imports to use correct paths from new location - Create re-export shims at original locations for backward compatibility - Delete test files from shim locations (tests live in extension now) - Update tsconfig.plugin-sdk.dts.json rootDir from "src" to "." to accommodate extension files outside src/ - Update write-plugin-sdk-entry-dts.ts to match new declaration output paths * fix: add importOriginal to thread-bindings session-meta mock for extensions test * style: fix formatting in thread-bindings lifecycle test
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { issuePairingChallenge } from "../../../../src/pairing/pairing-challenge.js";
|
|
import { upsertChannelPairingRequest } from "../../../../src/pairing/pairing-store.js";
|
|
import type { DiscordDmCommandAccess } from "./dm-command-auth.js";
|
|
|
|
export async function handleDiscordDmCommandDecision(params: {
|
|
dmAccess: DiscordDmCommandAccess;
|
|
accountId: string;
|
|
sender: {
|
|
id: string;
|
|
tag?: string;
|
|
name?: string;
|
|
};
|
|
onPairingCreated: (code: string) => Promise<void>;
|
|
onUnauthorized: () => Promise<void>;
|
|
upsertPairingRequest?: typeof upsertChannelPairingRequest;
|
|
}): Promise<boolean> {
|
|
if (params.dmAccess.decision === "allow") {
|
|
return true;
|
|
}
|
|
|
|
if (params.dmAccess.decision === "pairing") {
|
|
const upsertPairingRequest = params.upsertPairingRequest ?? upsertChannelPairingRequest;
|
|
const result = await issuePairingChallenge({
|
|
channel: "discord",
|
|
senderId: params.sender.id,
|
|
senderIdLine: `Your Discord user id: ${params.sender.id}`,
|
|
meta: {
|
|
tag: params.sender.tag,
|
|
name: params.sender.name,
|
|
},
|
|
upsertPairingRequest: async ({ id, meta }) =>
|
|
await upsertPairingRequest({
|
|
channel: "discord",
|
|
id,
|
|
accountId: params.accountId,
|
|
meta,
|
|
}),
|
|
sendPairingReply: async () => {},
|
|
});
|
|
if (result.created && result.code) {
|
|
await params.onPairingCreated(result.code);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
await params.onUnauthorized();
|
|
return false;
|
|
}
|