Move all Slack channel implementation files from src/slack/ to extensions/slack/src/ and replace originals with shim re-exports. This follows the extension migration pattern for channel plugins. - Copy all .ts files to extensions/slack/src/ (preserving directory structure: monitor/, http/, monitor/events/, monitor/message-handler/) - Transform import paths: external src/ imports use relative paths back to src/, internal slack imports stay relative within extension - Replace all src/slack/ files with shim re-exports pointing to the extension copies - Update tsconfig.plugin-sdk.dts.json rootDir from "src" to "." so the DTS build can follow shim chains into extensions/ - Update write-plugin-sdk-entry-dts.ts re-export path accordingly - Preserve extensions/slack/index.ts, package.json, openclaw.plugin.json, src/channel.ts, src/runtime.ts, src/channel.test.ts (untouched)
21 lines
594 B
TypeScript
21 lines
594 B
TypeScript
import { type RetryOptions, type WebClientOptions, WebClient } from "@slack/web-api";
|
|
|
|
export const SLACK_DEFAULT_RETRY_OPTIONS: RetryOptions = {
|
|
retries: 2,
|
|
factor: 2,
|
|
minTimeout: 500,
|
|
maxTimeout: 3000,
|
|
randomize: true,
|
|
};
|
|
|
|
export function resolveSlackWebClientOptions(options: WebClientOptions = {}): WebClientOptions {
|
|
return {
|
|
...options,
|
|
retryConfig: options.retryConfig ?? SLACK_DEFAULT_RETRY_OPTIONS,
|
|
};
|
|
}
|
|
|
|
export function createSlackWebClient(token: string, options: WebClientOptions = {}) {
|
|
return new WebClient(token, resolveSlackWebClientOptions(options));
|
|
}
|