agent-slack 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -16,7 +16,7 @@
16
16
  "import { CREDENTIALS_FILE, KEYCHAIN_SERVICE } from \"./paths.ts\";\nimport { readJsonFile, writeJsonFile } from \"../lib/fs.ts\";\nimport { CredentialsSchema, type Credentials, type Workspace } from \"./schema.ts\";\nimport { keychainGet, keychainSet } from \"./keychain.ts\";\nimport { platform } from \"node:os\";\n\nconst KEYCHAIN_PLACEHOLDER = \"__KEYCHAIN__\";\nconst IS_MACOS = platform() === \"darwin\";\n\nfunction normalizeWorkspaceUrl(workspaceUrl: string): string {\n const u = new URL(workspaceUrl);\n return `${u.protocol}//${u.host}`;\n}\n\nfunction isPlaceholderSecret(value: string | undefined): boolean {\n return !value || value === KEYCHAIN_PLACEHOLDER;\n}\n\nexport async function loadCredentials(): Promise<Credentials> {\n const fromFile = await readJsonFile<unknown>(CREDENTIALS_FILE);\n const parsed = CredentialsSchema.safeParse(fromFile ?? { version: 1, workspaces: [] });\n if (!parsed.success) {\n return { version: 1, workspaces: [] };\n }\n\n // Optional: hydrate browser cookie/token from keychain for security.\n const creds = parsed.data;\n const hydrated = creds.workspaces.map((w) => {\n if (w.auth.auth_type === \"browser\") {\n const account = `xoxc:${normalizeWorkspaceUrl(w.workspace_url)}`;\n const xoxc = keychainGet(account, KEYCHAIN_SERVICE);\n const xoxd = keychainGet(\"xoxd\", KEYCHAIN_SERVICE);\n return {\n ...w,\n auth: {\n auth_type: \"browser\" as const,\n xoxc_token: xoxc ?? w.auth.xoxc_token,\n xoxd_cookie: xoxd ?? w.auth.xoxd_cookie,\n },\n };\n }\n if (w.auth.auth_type === \"standard\") {\n const account = `token:${normalizeWorkspaceUrl(w.workspace_url)}`;\n const token = keychainGet(account, KEYCHAIN_SERVICE);\n return {\n ...w,\n auth: {\n auth_type: \"standard\" as const,\n token: token ?? w.auth.token,\n },\n };\n }\n return w;\n });\n\n return { ...creds, workspaces: hydrated };\n}\n\nexport async function saveCredentials(credentials: Credentials): Promise<void> {\n const payload: Credentials = {\n ...credentials,\n updated_at: new Date().toISOString(),\n workspaces: credentials.workspaces.map((w) => ({\n ...w,\n workspace_url: normalizeWorkspaceUrl(w.workspace_url),\n })),\n };\n\n // Store secrets in keychain when possible and avoid writing plaintext tokens to disk.\n // If keychain writes fail (or non-macOS), fall back to storing secrets in the file.\n const filePayload: Credentials = structuredClone(payload);\n\n if (IS_MACOS) {\n // Browser auth: xoxd is shared across workspaces, xoxc is per-workspace.\n const firstBrowser = payload.workspaces.find((w) => w.auth.auth_type === \"browser\");\n let xoxdStored = false;\n if (\n firstBrowser?.auth.auth_type === \"browser\" &&\n !isPlaceholderSecret(firstBrowser.auth.xoxd_cookie)\n ) {\n const existing = keychainGet(\"xoxd\", KEYCHAIN_SERVICE);\n xoxdStored =\n existing === firstBrowser.auth.xoxd_cookie ||\n keychainSet({\n account: \"xoxd\",\n value: firstBrowser.auth.xoxd_cookie,\n service: KEYCHAIN_SERVICE,\n });\n }\n\n for (const w of filePayload.workspaces) {\n if (w.auth.auth_type === \"browser\") {\n const account = `xoxc:${normalizeWorkspaceUrl(w.workspace_url)}`;\n const tokenStored =\n isPlaceholderSecret(w.auth.xoxc_token) ||\n keychainGet(account, KEYCHAIN_SERVICE) === w.auth.xoxc_token ||\n keychainSet({ account, value: w.auth.xoxc_token, service: KEYCHAIN_SERVICE });\n\n if (tokenStored) {\n w.auth.xoxc_token = KEYCHAIN_PLACEHOLDER;\n }\n if (xoxdStored) {\n w.auth.xoxd_cookie = KEYCHAIN_PLACEHOLDER;\n }\n }\n\n if (w.auth.auth_type === \"standard\") {\n const account = `token:${normalizeWorkspaceUrl(w.workspace_url)}`;\n const tokenStored =\n isPlaceholderSecret(w.auth.token) ||\n keychainGet(account, KEYCHAIN_SERVICE) === w.auth.token ||\n keychainSet({ account, value: w.auth.token, service: KEYCHAIN_SERVICE });\n if (tokenStored) {\n w.auth.token = KEYCHAIN_PLACEHOLDER;\n }\n }\n }\n }\n\n await writeJsonFile(CREDENTIALS_FILE, filePayload);\n}\n\nexport async function upsertWorkspace(workspace: Workspace): Promise<Workspace> {\n const creds = await loadCredentials();\n const normalizedUrl = normalizeWorkspaceUrl(workspace.workspace_url);\n const next: Workspace = { ...workspace, workspace_url: normalizedUrl };\n\n const idx = creds.workspaces.findIndex(\n (w) => normalizeWorkspaceUrl(w.workspace_url) === normalizedUrl,\n );\n if (idx === -1) {\n creds.workspaces.push(next);\n } else {\n creds.workspaces[idx] = {\n ...creds.workspaces[idx],\n ...next,\n auth: next.auth,\n };\n }\n\n if (!creds.default_workspace_url) {\n creds.default_workspace_url = normalizedUrl;\n }\n await saveCredentials(creds);\n return next;\n}\n\nexport async function upsertWorkspaces(workspaces: Workspace[]): Promise<void> {\n if (workspaces.length === 0) {\n return;\n }\n const creds = await loadCredentials();\n\n for (const workspace of workspaces) {\n const normalizedUrl = normalizeWorkspaceUrl(workspace.workspace_url);\n const next: Workspace = { ...workspace, workspace_url: normalizedUrl };\n\n const idx = creds.workspaces.findIndex(\n (w) => normalizeWorkspaceUrl(w.workspace_url) === normalizedUrl,\n );\n if (idx === -1) {\n creds.workspaces.push(next);\n } else {\n creds.workspaces[idx] = {\n ...creds.workspaces[idx],\n ...next,\n auth: next.auth,\n };\n }\n\n if (!creds.default_workspace_url) {\n creds.default_workspace_url = normalizedUrl;\n }\n }\n\n await saveCredentials(creds);\n}\n\nexport async function setDefaultWorkspace(workspaceUrl: string): Promise<void> {\n const creds = await loadCredentials();\n creds.default_workspace_url = normalizeWorkspaceUrl(workspaceUrl);\n await saveCredentials(creds);\n}\n\nexport async function removeWorkspace(workspaceUrl: string): Promise<void> {\n const creds = await loadCredentials();\n const normalized = normalizeWorkspaceUrl(workspaceUrl);\n creds.workspaces = creds.workspaces.filter(\n (w) => normalizeWorkspaceUrl(w.workspace_url) !== normalized,\n );\n if (creds.default_workspace_url === normalized) {\n creds.default_workspace_url = creds.workspaces[0]?.workspace_url;\n }\n await saveCredentials(creds);\n}\n\nexport async function resolveWorkspaceForUrl(workspaceUrl: string): Promise<Workspace | null> {\n const creds = await loadCredentials();\n const normalized = normalizeWorkspaceUrl(workspaceUrl);\n return (\n creds.workspaces.find((w) => normalizeWorkspaceUrl(w.workspace_url) === normalized) ?? null\n );\n}\n\nexport async function resolveDefaultWorkspace(): Promise<Workspace | null> {\n const creds = await loadCredentials();\n if (creds.default_workspace_url) {\n const byDefault = creds.workspaces.find((w) => w.workspace_url === creds.default_workspace_url);\n if (byDefault) {\n return byDefault;\n }\n }\n return creds.workspaces[0] ?? null;\n}\n\n// (reserved for future non-secret per-workspace metadata)\n",
17
17
  "import type { Workspace } from \"../auth/schema.ts\";\n\nexport type WorkspaceSelectorResult = {\n match: Workspace | null;\n ambiguous: Workspace[];\n};\n\nfunction normalizeUrl(u: string): string {\n const url = new URL(u);\n return `${url.protocol}//${url.host}`;\n}\n\nfunction normalizedWorkspaceCandidates(workspace: Workspace): string[] {\n let host = \"\";\n try {\n host = new URL(workspace.workspace_url).host.toLowerCase();\n } catch {\n host = \"\";\n }\n const hostWithoutSlackSuffix = host.replace(/\\.slack\\.com$/i, \"\");\n return [\n workspace.workspace_url.toLowerCase(),\n host,\n hostWithoutSlackSuffix,\n workspace.workspace_name?.toLowerCase() ?? \"\",\n workspace.team_domain?.toLowerCase() ?? \"\",\n ].filter(Boolean);\n}\n\nexport function resolveWorkspaceSelector(\n workspaces: Workspace[],\n selector: string,\n): WorkspaceSelectorResult {\n const raw = selector.trim();\n if (!raw) {\n return { match: null, ambiguous: [] };\n }\n\n try {\n const normalized = normalizeUrl(raw).toLowerCase();\n const exact = workspaces.find((w) => w.workspace_url.toLowerCase() === normalized);\n if (exact) {\n return { match: exact, ambiguous: [] };\n }\n } catch {\n // Not a URL selector; continue with fuzzy matching.\n }\n\n const needle = raw.toLowerCase();\n const matches = workspaces.filter((workspace) =>\n normalizedWorkspaceCandidates(workspace).some((candidate) => candidate.includes(needle)),\n );\n if (matches.length === 1) {\n return { match: matches[0]!, ambiguous: [] };\n }\n if (matches.length > 1) {\n return { match: null, ambiguous: matches };\n }\n return { match: null, ambiguous: [] };\n}\n",
18
18
  "export function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nexport function getString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function getNumber(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n",
19
- "import type { SlackApiClient } from \"./client.ts\";\nimport { asArray, getString, isRecord } from \"../lib/object-type-guards.ts\";\n\nexport function isChannelId(input: string): boolean {\n return /^[CDG][A-Z0-9]{8,}$/.test(input);\n}\n\nexport function normalizeChannelInput(input: string): {\n kind: \"id\" | \"name\";\n value: string;\n} {\n const trimmed = input.trim();\n if (trimmed.startsWith(\"#\")) {\n return { kind: \"name\", value: trimmed.slice(1) };\n }\n if (isChannelId(trimmed)) {\n return { kind: \"id\", value: trimmed };\n }\n return { kind: \"name\", value: trimmed };\n}\n\nexport async function resolveChannelId(client: SlackApiClient, input: string): Promise<string> {\n const normalized = normalizeChannelInput(input);\n if (normalized.kind === \"id\") {\n return normalized.value;\n }\n\n const name = normalized.value;\n if (!name) {\n throw new Error(\"Channel name is empty\");\n }\n\n // Slack has no name→ID lookup API. conversations.list paginates the entire\n // workspace (200 at a time), which is O(channels) API calls — 3+ minutes in\n // large workspaces. search.messages with `in:#name` resolves it in one call\n // by returning a message whose metadata includes the channel ID.\n try {\n const searchResp = await client.api(\"search.messages\", {\n query: `in:#${name}`,\n count: 1,\n sort: \"timestamp\",\n sort_dir: \"desc\",\n });\n const messages = isRecord(searchResp) ? searchResp.messages : null;\n const matches = isRecord(messages) ? asArray(messages.matches).filter(isRecord) : [];\n if (matches.length > 0) {\n const channel = isRecord(matches[0]!.channel) ? matches[0]!.channel : null;\n const channelId = channel ? getString(channel.id) : undefined;\n if (channelId) {\n return channelId;\n }\n }\n } catch {\n // search may fail (e.g. token lacks search:read scope) — fall through to pagination\n }\n\n // Fallback: paginate conversations.list until we find a match\n let cursor: string | undefined;\n for (;;) {\n const resp = await client.api(\"conversations.list\", {\n exclude_archived: true,\n limit: 200,\n cursor,\n types: \"public_channel,private_channel\",\n });\n const chans = asArray(resp.channels).filter(isRecord);\n for (const c of chans) {\n if (getString(c.name) === name && getString(c.id)) {\n return getString(c.id)!;\n }\n }\n\n const meta = isRecord(resp.response_metadata) ? resp.response_metadata : null;\n const next = meta ? getString(meta.next_cursor) : undefined;\n if (!next) {\n break;\n }\n cursor = next;\n }\n\n throw new Error(`Could not resolve channel name: #${name}`);\n}\n\n/**\n * Resolve a channel/DM ID to a human-readable name via conversations.info.\n * Returns the channel name (e.g. \"general\") or DM user's display name,\n * falling back to the raw ID on failure.\n */\nexport async function resolveChannelName(\n client: SlackApiClient,\n channelId: string,\n): Promise<string> {\n try {\n const resp = await client.api(\"conversations.info\", { channel: channelId });\n const channel = isRecord(resp) ? resp.channel : null;\n if (!isRecord(channel)) {\n return channelId;\n }\n\n // DM: resolve the other user's name\n if (channel.is_im) {\n const userId = getString(channel.user);\n if (userId) {\n try {\n const userResp = await client.api(\"users.info\", { user: userId });\n const user = isRecord(userResp) ? userResp.user : null;\n const profile = isRecord(user) ? user.profile : null;\n if (isRecord(profile)) {\n return getString(profile.display_name) || getString(profile.real_name) || channelId;\n }\n } catch {\n // fall through\n }\n }\n return channelId;\n }\n\n return getString(channel.name) || channelId;\n } catch {\n return channelId;\n }\n}\n",
19
+ "import type { SlackApiClient } from \"./client.ts\";\nimport { asArray, getString, isRecord } from \"../lib/object-type-guards.ts\";\n\nexport function isChannelId(input: string): boolean {\n return /^[CDG][A-Z0-9]{8,}$/.test(input);\n}\n\nexport function isUserId(input: string): boolean {\n return /^U[A-Z0-9]{8,}$/.test(input);\n}\n\n/**\n * Open (or reuse) a DM channel with a user via conversations.open.\n * Returns the DM channel ID.\n */\nexport async function openDmChannel(client: SlackApiClient, userId: string): Promise<string> {\n const resp = await client.api(\"conversations.open\", { users: userId });\n const channel = isRecord(resp) ? resp.channel : null;\n const channelId = isRecord(channel) ? getString(channel.id) : undefined;\n if (!channelId) {\n throw new Error(`Could not open DM channel for user: ${userId}`);\n }\n return channelId;\n}\n\nexport function normalizeChannelInput(input: string): {\n kind: \"id\" | \"name\";\n value: string;\n} {\n const trimmed = input.trim();\n if (trimmed.startsWith(\"#\")) {\n return { kind: \"name\", value: trimmed.slice(1) };\n }\n if (isChannelId(trimmed)) {\n return { kind: \"id\", value: trimmed };\n }\n return { kind: \"name\", value: trimmed };\n}\n\nexport async function resolveChannelId(client: SlackApiClient, input: string): Promise<string> {\n const normalized = normalizeChannelInput(input);\n if (normalized.kind === \"id\") {\n return normalized.value;\n }\n\n const name = normalized.value;\n if (!name) {\n throw new Error(\"Channel name is empty\");\n }\n\n // Slack has no name→ID lookup API. conversations.list paginates the entire\n // workspace (200 at a time), which is O(channels) API calls — 3+ minutes in\n // large workspaces. search.messages with `in:#name` resolves it in one call\n // by returning a message whose metadata includes the channel ID.\n try {\n const searchResp = await client.api(\"search.messages\", {\n query: `in:#${name}`,\n count: 1,\n sort: \"timestamp\",\n sort_dir: \"desc\",\n });\n const messages = isRecord(searchResp) ? searchResp.messages : null;\n const matches = isRecord(messages) ? asArray(messages.matches).filter(isRecord) : [];\n if (matches.length > 0) {\n const channel = isRecord(matches[0]!.channel) ? matches[0]!.channel : null;\n const channelId = channel ? getString(channel.id) : undefined;\n if (channelId) {\n return channelId;\n }\n }\n } catch {\n // search may fail (e.g. token lacks search:read scope) — fall through to pagination\n }\n\n // Fallback: paginate conversations.list until we find a match\n let cursor: string | undefined;\n for (;;) {\n const resp = await client.api(\"conversations.list\", {\n exclude_archived: true,\n limit: 200,\n cursor,\n types: \"public_channel,private_channel\",\n });\n const chans = asArray(resp.channels).filter(isRecord);\n for (const c of chans) {\n if (getString(c.name) === name && getString(c.id)) {\n return getString(c.id)!;\n }\n }\n\n const meta = isRecord(resp.response_metadata) ? resp.response_metadata : null;\n const next = meta ? getString(meta.next_cursor) : undefined;\n if (!next) {\n break;\n }\n cursor = next;\n }\n\n throw new Error(`Could not resolve channel name: #${name}`);\n}\n\n/**\n * Resolve a channel/DM ID to a human-readable name via conversations.info.\n * Returns the channel name (e.g. \"general\") or DM user's display name,\n * falling back to the raw ID on failure.\n */\nexport async function resolveChannelName(\n client: SlackApiClient,\n channelId: string,\n): Promise<string> {\n try {\n const resp = await client.api(\"conversations.info\", { channel: channelId });\n const channel = isRecord(resp) ? resp.channel : null;\n if (!isRecord(channel)) {\n return channelId;\n }\n\n // DM: resolve the other user's name\n if (channel.is_im) {\n const userId = getString(channel.user);\n if (userId) {\n try {\n const userResp = await client.api(\"users.info\", { user: userId });\n const user = isRecord(userResp) ? userResp.user : null;\n const profile = isRecord(user) ? user.profile : null;\n if (isRecord(profile)) {\n return getString(profile.display_name) || getString(profile.real_name) || channelId;\n }\n } catch {\n // fall through\n }\n }\n return channelId;\n }\n\n return getString(channel.name) || channelId;\n } catch {\n return channelId;\n }\n}\n",
20
20
  "import { WebClient } from \"@slack/web-api\";\nimport { getUserAgent } from \"../lib/version.ts\";\n\nexport type SlackAuth =\n | { auth_type: \"standard\"; token: string }\n | { auth_type: \"browser\"; xoxc_token: string; xoxd_cookie: string };\n\nexport class SlackApiClient {\n private auth: SlackAuth;\n private web?: WebClient;\n private workspaceUrl?: string;\n\n constructor(auth: SlackAuth, options?: { workspaceUrl?: string }) {\n this.auth = auth;\n this.workspaceUrl = options?.workspaceUrl;\n if (auth.auth_type === \"standard\") {\n this.web = new WebClient(auth.token);\n }\n }\n\n async api(\n method: string,\n params: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n if (this.auth.auth_type === \"standard\") {\n if (!this.web) {\n throw new Error(\"WebClient not initialized\");\n }\n return (await this.web.apiCall(method, params)) as unknown as Record<string, unknown>;\n }\n\n if (!this.workspaceUrl) {\n throw new Error(\n \"Browser auth requires workspace URL. Provide --workspace-url or set SLACK_WORKSPACE_URL, or call via a Slack message URL.\",\n );\n }\n const { auth } = this;\n if (auth.auth_type !== \"browser\") {\n throw new Error(\"Browser API requires browser auth\");\n }\n return this.browserApi({\n workspaceUrl: this.workspaceUrl,\n auth,\n method,\n params,\n });\n }\n\n private async browserApi(input: {\n workspaceUrl: string;\n auth: Extract<SlackAuth, { auth_type: \"browser\" }>;\n method: string;\n params: Record<string, unknown>;\n attempt?: number;\n }): Promise<Record<string, unknown>> {\n const attempt = input.attempt ?? 0;\n const url = `${input.workspaceUrl.replace(/\\/$/, \"\")}/api/${input.method}`;\n const cleanedEntries = Object.entries(input.params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)]);\n const formBody = new URLSearchParams({\n token: input.auth.xoxc_token,\n ...Object.fromEntries(cleanedEntries),\n });\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Cookie: `d=${encodeURIComponent(input.auth.xoxd_cookie)}`,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Origin: \"https://app.slack.com\",\n \"User-Agent\": getUserAgent(),\n },\n body: formBody,\n });\n\n if (response.status === 429 && attempt < 3) {\n const retryAfter = Number(response.headers.get(\"Retry-After\") ?? \"5\");\n const delayMs = Math.min(Math.max(retryAfter, 1) * 1000, 30000);\n await new Promise((r) => setTimeout(r, delayMs));\n return this.browserApi({\n ...input,\n attempt: attempt + 1,\n });\n }\n\n const data: unknown = await response.json().catch(() => ({}));\n if (!response.ok) {\n throw new Error(`Slack HTTP ${response.status} calling ${input.method}`);\n }\n if (!isRecord(data) || data.ok !== true) {\n const error = isRecord(data) && typeof data.error === \"string\" ? data.error : null;\n throw new Error(error || `Slack API error calling ${input.method}`);\n }\n return data;\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n",
21
21
  "import { extractFromBrave } from \"../auth/brave.ts\";\nimport { extractFromChrome } from \"../auth/chrome.ts\";\nimport { parseSlackCurlCommand } from \"../auth/curl.ts\";\nimport { extractFromSlackDesktop } from \"../auth/desktop.ts\";\nimport {\n loadCredentials,\n resolveDefaultWorkspace,\n resolveWorkspaceForUrl,\n upsertWorkspace,\n upsertWorkspaces,\n} from \"../auth/store.ts\";\nimport { resolveWorkspaceSelector } from \"./workspace-selector.ts\";\nimport { normalizeChannelInput } from \"../slack/channels.ts\";\nimport { SlackApiClient, type SlackAuth } from \"../slack/client.ts\";\n\nexport type CliContext = {\n effectiveWorkspaceUrl: (flag?: string) => string | undefined;\n assertWorkspaceSpecifiedForChannelNames: (input: {\n workspaceUrl: string | undefined;\n channels: string[];\n }) => Promise<void>;\n withAutoRefresh: <T>(input: {\n workspaceUrl: string | undefined;\n work: () => Promise<T>;\n }) => Promise<T>;\n getClientForWorkspace: (workspaceUrl?: string) => Promise<{\n client: SlackApiClient;\n auth: SlackAuth;\n workspace_url?: string;\n }>;\n normalizeUrl: (u: string) => string;\n errorMessage: (err: unknown) => string;\n parseContentType: (value: unknown) => \"any\" | \"text\" | \"image\" | \"snippet\" | \"file\";\n parseCurl: (curl: string) => ReturnType<typeof parseSlackCurlCommand>;\n importDesktop: () => ReturnType<typeof extractFromSlackDesktop>;\n importChrome: () => ReturnType<typeof extractFromChrome>;\n importBrave: () => ReturnType<typeof extractFromBrave>;\n};\n\nfunction isEnvAuthConfigured(): boolean {\n return Boolean(process.env.SLACK_TOKEN?.trim());\n}\n\nfunction effectiveWorkspaceUrl(flag?: string): string | undefined {\n return flag?.trim() || process.env.SLACK_WORKSPACE_URL?.trim() || undefined;\n}\n\nfunction errorMessage(err: unknown): string {\n return err instanceof Error ? err.message : String(err);\n}\n\nfunction parseContentType(value: unknown): \"any\" | \"text\" | \"image\" | \"snippet\" | \"file\" {\n const raw = String(value ?? \"any\").toLowerCase();\n if (raw === \"text\" || raw === \"image\" || raw === \"snippet\" || raw === \"file\") {\n return raw;\n }\n return \"any\";\n}\n\nasync function assertWorkspaceSpecifiedForChannelNames(input: {\n workspaceUrl: string | undefined;\n channels: string[];\n}): Promise<void> {\n const hasName = input.channels.some((c) => normalizeChannelInput(c).kind === \"name\");\n if (!hasName) {\n return;\n }\n\n const creds = await loadCredentials();\n if ((creds.workspaces?.length ?? 0) <= 1) {\n return;\n }\n\n if (!input.workspaceUrl) {\n throw new Error(\n 'Ambiguous channel name across multiple workspaces. Pass --workspace \"<url-or-unique-substring>\" (or set SLACK_WORKSPACE_URL).',\n );\n }\n}\n\nfunction isAuthErrorMessage(message: string): boolean {\n return /(?:^|[^a-z])(invalid_auth|token_expired)(?:$|[^a-z])/i.test(message);\n}\n\nfunction normalizeUrl(u: string): string {\n const url = new URL(u);\n return `${url.protocol}//${url.host}`;\n}\n\nfunction tryNormalizeUrl(u: string): string | undefined {\n try {\n return normalizeUrl(u);\n } catch {\n return undefined;\n }\n}\n\nasync function refreshFromDesktopIfPossible(): Promise<boolean> {\n if (process.platform !== \"darwin\" && process.platform !== \"linux\") {\n return false;\n }\n try {\n const extracted = await extractFromSlackDesktop();\n await upsertWorkspaces(\n extracted.teams.map((team) => ({\n workspace_url: normalizeUrl(team.url),\n workspace_name: team.name,\n auth: {\n auth_type: \"browser\" as const,\n xoxc_token: team.token,\n xoxd_cookie: extracted.cookie_d,\n },\n })),\n );\n return true;\n } catch {\n return false;\n }\n}\n\nasync function withAutoRefresh<T>(input: {\n workspaceUrl: string | undefined;\n work: () => Promise<T>;\n}): Promise<T> {\n try {\n return await input.work();\n } catch (err: unknown) {\n const message = errorMessage(err);\n if (isEnvAuthConfigured()) {\n throw err;\n }\n if (!isAuthErrorMessage(message)) {\n throw err;\n }\n\n const refreshed = await refreshFromDesktopIfPossible();\n if (!refreshed) {\n throw err;\n }\n return await input.work();\n }\n}\n\nfunction pickAuthFromEnv(): SlackAuth | null {\n const token = process.env.SLACK_TOKEN?.trim();\n if (!token) {\n return null;\n }\n if (token.startsWith(\"xoxc-\")) {\n const cookie = (process.env.SLACK_COOKIE_D || process.env.SLACK_COOKIE || \"\").trim();\n if (!cookie) {\n throw new Error(\"SLACK_TOKEN looks like xoxc- but SLACK_COOKIE_D is missing\");\n }\n return { auth_type: \"browser\", xoxc_token: token, xoxd_cookie: cookie };\n }\n return { auth_type: \"standard\", token };\n}\n\nasync function getClientForWorkspace(workspaceUrl?: string): Promise<{\n client: SlackApiClient;\n auth: SlackAuth;\n workspace_url?: string;\n}> {\n const selector = workspaceUrl?.trim() || undefined;\n const normalizedSelectorUrl = selector ? tryNormalizeUrl(selector) : undefined;\n const selectorProvided = Boolean(selector);\n let resolvedWorkspaceUrl = normalizedSelectorUrl;\n if (selector) {\n const creds = await loadCredentials();\n const resolved = resolveWorkspaceSelector(creds.workspaces, selector);\n if (resolved.ambiguous.length > 0) {\n const options = resolved.ambiguous.map((w) => w.workspace_url).join(\", \");\n throw new Error(\n `Workspace selector \"${selector}\" is ambiguous. Matches: ${options}. Pass a more specific selector or full workspace URL.`,\n );\n }\n if (resolved.match) {\n resolvedWorkspaceUrl = resolved.match.workspace_url;\n } else if (!normalizedSelectorUrl) {\n resolvedWorkspaceUrl = undefined;\n }\n }\n\n const env = pickAuthFromEnv();\n if (env) {\n const envWorkspaceUrl = process.env.SLACK_WORKSPACE_URL?.trim();\n const urlForBrowser = resolvedWorkspaceUrl || envWorkspaceUrl;\n return {\n client: new SlackApiClient(env, { workspaceUrl: urlForBrowser }),\n auth: env,\n workspace_url: urlForBrowser,\n };\n }\n\n if (resolvedWorkspaceUrl) {\n const ws = await resolveWorkspaceForUrl(resolvedWorkspaceUrl);\n if (ws) {\n return {\n client: new SlackApiClient(ws.auth as SlackAuth, {\n workspaceUrl: ws.workspace_url,\n }),\n auth: ws.auth as SlackAuth,\n workspace_url: ws.workspace_url,\n };\n }\n }\n\n if (!selectorProvided) {\n const def = await resolveDefaultWorkspace();\n if (def) {\n return {\n client: new SlackApiClient(def.auth as SlackAuth, {\n workspaceUrl: def.workspace_url,\n }),\n auth: def.auth as SlackAuth,\n workspace_url: def.workspace_url,\n };\n }\n }\n\n try {\n const extracted = await extractFromSlackDesktop();\n await upsertWorkspaces(\n extracted.teams.map((team) => ({\n workspace_url: normalizeUrl(team.url),\n workspace_name: team.name,\n auth: {\n auth_type: \"browser\" as const,\n xoxc_token: team.token,\n xoxd_cookie: extracted.cookie_d,\n },\n })),\n );\n\n const desired = resolvedWorkspaceUrl\n ? await resolveWorkspaceForUrl(resolvedWorkspaceUrl)\n : selector\n ? resolveWorkspaceSelector((await loadCredentials()).workspaces, selector).match\n : await resolveDefaultWorkspace();\n const chosen = desired ?? (!selectorProvided ? await resolveDefaultWorkspace() : null);\n if (chosen) {\n return {\n client: new SlackApiClient(chosen.auth as SlackAuth, {\n workspaceUrl: chosen.workspace_url,\n }),\n auth: chosen.auth as SlackAuth,\n workspace_url: chosen.workspace_url,\n };\n }\n } catch {\n // Fall through to Chrome extraction.\n }\n\n // Fallback: try Chrome or Brave extraction (macOS).\n const chrome = extractFromChrome() ?? (await extractFromBrave());\n if (chrome && chrome.teams.length > 0) {\n let chosen = chrome.teams[0]!;\n if (selector) {\n const normalizedSelector = selector.toLowerCase();\n const matches = chrome.teams.filter((t) => {\n const normalizedUrl = normalizeUrl(t.url).toLowerCase();\n const host = new URL(t.url).host.toLowerCase();\n const hostWithoutSlackSuffix = host.replace(/\\.slack\\.com$/i, \"\");\n const name = t.name?.toLowerCase() ?? \"\";\n return (\n normalizedUrl.includes(normalizedSelector) ||\n host.includes(normalizedSelector) ||\n hostWithoutSlackSuffix.includes(normalizedSelector) ||\n name.includes(normalizedSelector)\n );\n });\n if (matches.length > 1) {\n throw new Error(\n `Workspace selector \"${selector}\" is ambiguous in Chrome workspaces. Matches: ${matches.map((t) => normalizeUrl(t.url)).join(\", \")}. Pass a more specific selector or full workspace URL.`,\n );\n }\n if (matches.length === 1) {\n chosen = matches[0]!;\n } else if (normalizedSelectorUrl) {\n try {\n chosen =\n chrome.teams.find((t) => normalizeUrl(t.url) === normalizeUrl(selector)) ?? chosen;\n } catch {\n // Keep default selection.\n }\n } else {\n throw new Error(\n `No configured workspace matches selector \"${selector}\". Run \"agent-slack auth whoami\" to list available workspaces.`,\n );\n }\n }\n const auth: SlackAuth = {\n auth_type: \"browser\",\n xoxc_token: chosen.token,\n xoxd_cookie: chrome.cookie_d,\n };\n await upsertWorkspace({\n workspace_url: normalizeUrl(chosen.url),\n workspace_name: chosen.name,\n auth: {\n auth_type: \"browser\",\n xoxc_token: chosen.token,\n xoxd_cookie: chrome.cookie_d,\n },\n });\n return {\n client: new SlackApiClient(auth, {\n workspaceUrl: normalizeUrl(chosen.url),\n }),\n auth,\n workspace_url: normalizeUrl(chosen.url),\n };\n }\n\n if (selector && !normalizedSelectorUrl) {\n throw new Error(\n `No configured workspace matches selector \"${selector}\". Run \"agent-slack auth whoami\" to list available workspaces.`,\n );\n }\n\n throw new Error(\n 'No Slack credentials available. Try \"agent-slack auth import-desktop\", \"agent-slack auth import-chrome\", \"agent-slack auth import-brave\", or set SLACK_TOKEN / SLACK_COOKIE_D.',\n );\n}\n\nexport function createCliContext(): CliContext {\n return {\n effectiveWorkspaceUrl,\n assertWorkspaceSpecifiedForChannelNames,\n withAutoRefresh,\n getClientForWorkspace,\n normalizeUrl,\n errorMessage,\n parseContentType,\n parseCurl: parseSlackCurlCommand,\n importDesktop: extractFromSlackDesktop,\n importChrome: extractFromChrome,\n importBrave: extractFromBrave,\n };\n}\n",
22
22
  "export function pruneEmpty<T>(value: T): T {\n const pruned = pruneEmptyInternal(value);\n return (pruned === undefined ? ({} as T) : (pruned as T)) as T;\n}\n\nfunction pruneEmptyInternal(value: unknown): unknown {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === \"string\") {\n return value.trim() === \"\" ? undefined : value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n\n if (Array.isArray(value)) {\n const next = value\n .map((v) => pruneEmptyInternal(v))\n .filter((v): v is Exclude<unknown, undefined> => v !== undefined);\n return next.length === 0 ? undefined : next;\n }\n\n if (typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n const next = pruneEmptyInternal(v);\n if (next !== undefined) {\n out[k] = next;\n }\n }\n return Object.keys(out).length === 0 ? undefined : out;\n }\n\n return value;\n}\n",
@@ -34,13 +34,13 @@
34
34
  "import type { SlackApiClient } from \"./client.ts\";\nimport type { SlackFileSummary } from \"./messages.ts\";\nimport { getNumber, getString, isRecord } from \"../lib/object-type-guards.ts\";\n\nexport function toSlackFileSummary(value: unknown): SlackFileSummary | null {\n if (!isRecord(value)) {\n return null;\n }\n const id = getString(value.id);\n if (!id) {\n return null;\n }\n return {\n id,\n name: getString(value.name),\n title: getString(value.title),\n mimetype: getString(value.mimetype),\n filetype: getString(value.filetype),\n mode: getString(value.mode),\n permalink: getString(value.permalink),\n url_private: getString(value.url_private),\n url_private_download: getString(value.url_private_download),\n size: getNumber(value.size),\n };\n}\n\nexport async function enrichFiles(\n client: SlackApiClient,\n files: SlackFileSummary[],\n): Promise<SlackFileSummary[]> {\n const out: SlackFileSummary[] = [];\n for (const f of files) {\n if (f.mode === \"snippet\" || !f.url_private_download) {\n try {\n const info = await client.api(\"files.info\", { file: f.id });\n const file = isRecord(info.file) ? info.file : null;\n out.push({\n ...f,\n name: f.name ?? getString(file?.name),\n title: f.title ?? getString(file?.title),\n mimetype: f.mimetype ?? getString(file?.mimetype),\n filetype: f.filetype ?? getString(file?.filetype),\n mode: f.mode ?? getString(file?.mode),\n permalink: f.permalink ?? getString(file?.permalink),\n url_private: f.url_private ?? getString(file?.url_private),\n url_private_download: f.url_private_download ?? getString(file?.url_private_download),\n snippet: {\n content: getString(file?.content),\n language: getString(file?.filetype),\n },\n });\n continue;\n } catch {\n // ignore and fall back to summary\n }\n }\n out.push(f);\n }\n return out;\n}\n",
35
35
  "import type { SlackMessageRef } from \"./url.ts\";\nimport type { SlackApiClient } from \"./client.ts\";\nimport { slackMrkdwnToMarkdown } from \"./mrkdwn.ts\";\nimport { renderSlackMessageContent } from \"./render.ts\";\nimport { asArray, getNumber, getString, isRecord } from \"../lib/object-type-guards.ts\";\nimport { enrichFiles, toSlackFileSummary } from \"./message-api-parsing.ts\";\n\nexport type SlackFileSummary = {\n id: string;\n name?: string;\n title?: string;\n mimetype?: string;\n filetype?: string;\n mode?: string;\n permalink?: string;\n url_private?: string;\n url_private_download?: string;\n size?: number;\n snippet?: {\n content?: string;\n language?: string;\n };\n};\n\nexport type SlackMessageSummary = {\n channel_id: string;\n ts: string;\n thread_ts?: string;\n reply_count?: number;\n user?: string;\n bot_id?: string;\n text: string;\n markdown: string;\n blocks?: unknown[];\n attachments?: unknown[];\n files?: SlackFileSummary[];\n reactions?: unknown[];\n};\n\nexport type CompactSlackMessage = {\n channel_id: string;\n ts: string;\n thread_ts?: string;\n author?: { user_id?: string; bot_id?: string };\n content?: string;\n files?: {\n mimetype?: string;\n mode?: string;\n path: string;\n }[];\n reactions?: {\n name: string;\n users: string[];\n count?: number;\n }[];\n forwarded_threads?: {\n url: string;\n thread_ts: string;\n channel_id?: string;\n reply_count?: number;\n }[];\n};\n\nexport function toCompactMessage(\n msg: SlackMessageSummary,\n input?: {\n maxSnippetChars?: number;\n maxBodyChars?: number;\n includeReactions?: boolean;\n downloadedPaths?: Record<string, string>;\n },\n): CompactSlackMessage {\n const maxBodyChars = input?.maxBodyChars ?? 8000;\n const includeReactions = input?.includeReactions ?? false;\n\n const rendered = renderSlackMessageContent(msg);\n const content =\n maxBodyChars >= 0 && rendered.length > maxBodyChars\n ? `${rendered.slice(0, maxBodyChars)}\\n…`\n : rendered;\n\n const files = msg.files\n ?.map((f) => {\n const path = input?.downloadedPaths?.[f.id];\n if (!path) {\n return null;\n }\n return {\n mimetype: f.mimetype,\n mode: f.mode,\n path,\n };\n })\n .filter((f): f is NonNullable<typeof f> => Boolean(f));\n\n return {\n channel_id: msg.channel_id,\n ts: msg.ts,\n thread_ts: msg.thread_ts ?? ((msg.reply_count ?? 0) > 0 ? msg.ts : undefined),\n author: msg.user || msg.bot_id ? { user_id: msg.user, bot_id: msg.bot_id } : undefined,\n content: content ? content : undefined,\n files: files && files.length > 0 ? files : undefined,\n reactions: includeReactions ? compactReactions(msg.reactions) : undefined,\n forwarded_threads: extractForwardedThreads(msg.attachments),\n };\n}\n\nfunction compactReactions(\n reactions: unknown[] | undefined,\n): Array<{ name: string; users: string[]; count?: number }> | undefined {\n if (!Array.isArray(reactions) || reactions.length === 0) {\n return undefined;\n }\n const out: { name: string; users: string[]; count?: number }[] = [];\n for (const r of reactions) {\n if (!isRecord(r)) {\n continue;\n }\n const name = getString(r.name)?.trim() ?? \"\";\n if (!name) {\n continue;\n }\n const users = Array.isArray(r.users)\n ? r.users.map((u) => String(u)).filter((u) => /^U[A-Z0-9]{8,}$/.test(u))\n : [];\n const count = typeof r.count === \"number\" && r.count !== users.length ? r.count : undefined;\n out.push({ name, users, count });\n }\n return out.length ? out : undefined;\n}\n\nfunction extractForwardedThreads(attachments: unknown[] | undefined):\n | {\n url: string;\n thread_ts: string;\n channel_id?: string;\n reply_count?: number;\n }[]\n | undefined {\n if (!Array.isArray(attachments) || attachments.length === 0) {\n return undefined;\n }\n const out: {\n url: string;\n thread_ts: string;\n channel_id?: string;\n reply_count?: number;\n }[] = [];\n const seen = new Set<string>();\n for (const attachment of attachments) {\n if (!isRecord(attachment)) {\n continue;\n }\n const fromUrl = getString(attachment.from_url)?.trim();\n if (!fromUrl) {\n continue;\n }\n let parsed: URL;\n try {\n parsed = new URL(fromUrl);\n } catch {\n continue;\n }\n const threadTs = parsed.searchParams.get(\"thread_ts\")?.trim();\n if (!threadTs || !/^\\d{6,}\\.\\d{6}$/.test(threadTs)) {\n continue;\n }\n const channelId = parsed.searchParams.get(\"cid\")?.trim();\n const replyCount = getNumber(attachment.reply_count);\n const key = `${fromUrl}::${threadTs}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n out.push({\n url: fromUrl,\n thread_ts: threadTs,\n channel_id: channelId || undefined,\n reply_count: replyCount,\n });\n }\n return out.length ? out : undefined;\n}\n\nexport async function fetchMessage(\n client: SlackApiClient,\n input: { ref: SlackMessageRef; includeReactions?: boolean },\n): Promise<SlackMessageSummary> {\n const history = await client.api(\"conversations.history\", {\n channel: input.ref.channel_id,\n latest: input.ref.message_ts,\n inclusive: true,\n limit: 5,\n include_all_metadata: input.includeReactions ? true : undefined,\n });\n const historyMessages = asArray(history.messages);\n let msg = historyMessages.find(\n (m): m is Record<string, unknown> => isRecord(m) && getString(m.ts) === input.ref.message_ts,\n );\n\n // Thread replies are not guaranteed to appear in channel history. If the URL\n // includes ?thread_ts=..., scan the thread directly.\n if (!msg && input.ref.thread_ts_hint) {\n msg = await findMessageInThread(client, {\n channelId: input.ref.channel_id,\n threadTs: input.ref.thread_ts_hint,\n targetTs: input.ref.message_ts,\n includeReactions: input.includeReactions,\n });\n }\n\n // Fallback: if the message_ts is actually the thread root, replies can still\n // be fetched via conversations.replies even if history is missing it.\n if (!msg) {\n try {\n const rootResp = await client.api(\"conversations.replies\", {\n channel: input.ref.channel_id,\n ts: input.ref.message_ts,\n limit: 1,\n include_all_metadata: input.includeReactions ? true : undefined,\n });\n const [root] = asArray(rootResp.messages);\n if (isRecord(root) && getString(root.ts) === input.ref.message_ts) {\n msg = root;\n }\n } catch {\n // ignore\n }\n }\n\n if (!msg) {\n throw new Error(\"Message not found (no access or wrong URL)\");\n }\n\n const files = asArray(msg.files)\n .map((f) => toSlackFileSummary(f))\n .filter((f): f is SlackFileSummary => f !== null);\n const enrichedFiles = files.length > 0 ? await enrichFiles(client, files) : undefined;\n\n const text = getString(msg.text) ?? \"\";\n const ts = getString(msg.ts) ?? input.ref.message_ts;\n const blocks = Array.isArray(msg.blocks) ? (msg.blocks as unknown[]) : undefined;\n const attachments = Array.isArray(msg.attachments) ? (msg.attachments as unknown[]) : undefined;\n const reactions = Array.isArray(msg.reactions) ? (msg.reactions as unknown[]) : undefined;\n return {\n channel_id: input.ref.channel_id,\n ts,\n thread_ts: getString(msg.thread_ts),\n reply_count: getNumber(msg.reply_count),\n user: getString(msg.user),\n bot_id: getString(msg.bot_id),\n text,\n markdown: slackMrkdwnToMarkdown(text),\n blocks,\n attachments,\n files: enrichedFiles,\n reactions,\n };\n}\n\nasync function findMessageInThread(\n client: SlackApiClient,\n input: {\n channelId: string;\n threadTs: string;\n targetTs: string;\n includeReactions?: boolean;\n },\n): Promise<Record<string, unknown> | undefined> {\n let cursor: string | undefined;\n for (;;) {\n const resp = await client.api(\"conversations.replies\", {\n channel: input.channelId,\n ts: input.threadTs,\n limit: 200,\n cursor,\n include_all_metadata: input.includeReactions ? true : undefined,\n });\n const messages = asArray(resp.messages);\n const found = messages.find(\n (m): m is Record<string, unknown> => isRecord(m) && getString(m.ts) === input.targetTs,\n );\n if (found) {\n return found;\n }\n const meta = isRecord(resp.response_metadata) ? resp.response_metadata : null;\n const next = meta ? getString(meta.next_cursor) : undefined;\n if (!next) {\n break;\n }\n cursor = next;\n }\n return undefined;\n}\n\nexport async function fetchChannelHistory(\n client: SlackApiClient,\n input: {\n channelId: string;\n limit?: number;\n latest?: string;\n oldest?: string;\n includeReactions?: boolean;\n withReactions?: string[];\n withoutReactions?: string[];\n },\n): Promise<SlackMessageSummary[]> {\n const raw = input.limit ?? 25;\n const limit = Number.isFinite(raw) ? Math.min(Math.max(raw, 1), 200) : 25;\n const out: SlackMessageSummary[] = [];\n const withReactions = input.withReactions ?? [];\n const withoutReactions = input.withoutReactions ?? [];\n const hasReactionFilters = withReactions.length > 0 || withoutReactions.length > 0;\n const pageLimit = hasReactionFilters ? 200 : limit;\n\n let cursorLatest = input.latest;\n for (;;) {\n const resp = await client.api(\"conversations.history\", {\n channel: input.channelId,\n limit: pageLimit,\n latest: cursorLatest,\n oldest: input.oldest,\n include_all_metadata: input.includeReactions || hasReactionFilters ? true : undefined,\n });\n const messages = asArray(resp.messages);\n if (messages.length === 0) {\n break;\n }\n for (const m of messages) {\n if (!isRecord(m)) {\n continue;\n }\n if (\n hasReactionFilters &&\n !passesReactionNameFilters(m, {\n withReactions,\n withoutReactions,\n })\n ) {\n continue;\n }\n const files = asArray(m.files)\n .map((f) => toSlackFileSummary(f))\n .filter((f): f is SlackFileSummary => f !== null);\n const enrichedFiles = files.length > 0 ? await enrichFiles(client, files) : undefined;\n\n const text = getString(m.text) ?? \"\";\n out.push({\n channel_id: input.channelId,\n ts: getString(m.ts) ?? \"\",\n thread_ts: getString(m.thread_ts),\n reply_count: getNumber(m.reply_count),\n user: getString(m.user),\n bot_id: getString(m.bot_id),\n text,\n markdown: slackMrkdwnToMarkdown(text),\n blocks: Array.isArray(m.blocks) ? (m.blocks as unknown[]) : undefined,\n attachments: Array.isArray(m.attachments) ? (m.attachments as unknown[]) : undefined,\n files: enrichedFiles,\n reactions: Array.isArray(m.reactions) ? (m.reactions as unknown[]) : undefined,\n });\n if (out.length >= limit) {\n break;\n }\n }\n\n if (out.length >= limit || !hasReactionFilters) {\n break;\n }\n\n const last = messages.at(-1);\n const nextLatest = isRecord(last) ? getString(last.ts) : undefined;\n if (!nextLatest || nextLatest === cursorLatest) {\n break;\n }\n cursorLatest = nextLatest;\n }\n\n // conversations.history returns newest-first; normalize to chronological.\n out.sort((a, b) => Number.parseFloat(a.ts) - Number.parseFloat(b.ts));\n return out;\n}\n\nexport function passesReactionNameFilters(\n msg: Record<string, unknown>,\n input: { withReactions?: string[]; withoutReactions?: string[] },\n): boolean {\n const withReactions = input.withReactions ?? [];\n const withoutReactions = input.withoutReactions ?? [];\n const names = new Set<string>();\n for (const r of asArray(msg.reactions)) {\n if (!isRecord(r)) {\n continue;\n }\n const name = getString(r.name)?.trim();\n if (name) {\n names.add(name);\n }\n }\n if (withReactions.some((name) => !names.has(name))) {\n return false;\n }\n if (withoutReactions.some((name) => names.has(name))) {\n return false;\n }\n return true;\n}\n\nexport async function fetchThread(\n client: SlackApiClient,\n input: { channelId: string; threadTs: string; includeReactions?: boolean },\n): Promise<SlackMessageSummary[]> {\n const out: SlackMessageSummary[] = [];\n let cursor: string | undefined;\n\n for (;;) {\n const resp = await client.api(\"conversations.replies\", {\n channel: input.channelId,\n ts: input.threadTs,\n limit: 200,\n cursor,\n include_all_metadata: input.includeReactions ? true : undefined,\n });\n const messages = asArray(resp.messages);\n for (const m of messages) {\n if (!isRecord(m)) {\n continue;\n }\n const files = asArray(m.files)\n .map((f) => toSlackFileSummary(f))\n .filter((f): f is SlackFileSummary => f !== null);\n const enrichedFiles = files.length > 0 ? await enrichFiles(client, files) : undefined;\n\n const text = getString(m.text) ?? \"\";\n out.push({\n channel_id: input.channelId,\n ts: getString(m.ts) ?? \"\",\n thread_ts: getString(m.thread_ts),\n reply_count: getNumber(m.reply_count),\n user: getString(m.user),\n bot_id: getString(m.bot_id),\n text,\n markdown: slackMrkdwnToMarkdown(text),\n blocks: Array.isArray(m.blocks) ? (m.blocks as unknown[]) : undefined,\n attachments: Array.isArray(m.attachments) ? (m.attachments as unknown[]) : undefined,\n files: enrichedFiles,\n reactions: Array.isArray(m.reactions) ? (m.reactions as unknown[]) : undefined,\n });\n }\n const meta = isRecord(resp.response_metadata) ? resp.response_metadata : null;\n const next = meta ? getString(meta.next_cursor) : undefined;\n if (!next) {\n break;\n }\n cursor = next;\n }\n\n // Slack returns newest-first for some methods; normalize to chronological.\n out.sort((a, b) => Number.parseFloat(a.ts) - Number.parseFloat(b.ts));\n return out;\n}\n",
36
36
  "export type SlackMessageRef = {\n workspace_url: string;\n channel_id: string;\n message_ts: string; // \"1234567890.123456\"\n thread_ts_hint?: string; // from URL query (?thread_ts=...)\n raw: string;\n /** True if the URL looks like it may have been truncated by shell & interpretation */\n possiblyTruncated?: boolean;\n};\n\nexport function parseSlackMessageUrl(input: string): SlackMessageRef {\n let url: URL;\n try {\n url = new URL(input);\n } catch {\n throw new Error(`Invalid URL: ${input}`);\n }\n\n if (!/\\.slack\\.com$/i.test(url.hostname)) {\n throw new Error(`Not a Slack workspace URL: ${url.hostname}`);\n }\n\n const parts = url.pathname.split(\"/\").filter(Boolean);\n // /archives/<channel>/p<digits>\n if (parts.length < 3 || parts[0] !== \"archives\") {\n throw new Error(`Unsupported Slack URL path: ${url.pathname}`);\n }\n\n const channel_id = parts[1]!;\n const messagePart = parts[2]!;\n const match = messagePart.match(/^p(\\d{7,})$/);\n if (!match) {\n throw new Error(`Unsupported Slack message id: ${messagePart}`);\n }\n\n const digits = match[1]!;\n if (digits.length <= 6) {\n throw new Error(`Invalid Slack message id: ${messagePart}`);\n }\n const seconds = digits.slice(0, -6);\n const micros = digits.slice(-6);\n const message_ts = `${seconds}.${micros}`;\n\n const threadTsParam = url.searchParams.get(\"thread_ts\");\n const thread_ts_hint =\n threadTsParam && /^\\d{6,}\\.\\d{6}$/.test(threadTsParam) ? threadTsParam : undefined;\n\n // Slack URLs with thread_ts typically also have cid param. If thread_ts exists but\n // cid doesn't, the URL was likely truncated by shell interpreting & as background.\n const hasCid = url.searchParams.has(\"cid\");\n const possiblyTruncated = Boolean(threadTsParam && !hasCid);\n\n const workspace_url = `${url.protocol}//${url.host}`;\n return { workspace_url, channel_id, message_ts, thread_ts_hint, raw: input, possiblyTruncated };\n}\n",
37
- "import { parseSlackMessageUrl, type SlackMessageRef } from \"../slack/url.ts\";\nimport { isChannelId } from \"../slack/channels.ts\";\n\nexport type MsgTarget =\n | { kind: \"url\"; ref: SlackMessageRef }\n | { kind: \"channel\"; channel: string };\n\nexport function parseMsgTarget(input: string): MsgTarget {\n const trimmed = input.trim();\n if (!trimmed) {\n throw new Error(\"Missing target\");\n }\n\n try {\n const ref = parseSlackMessageUrl(trimmed);\n return { kind: \"url\", ref };\n } catch {\n // not a slack message URL\n }\n\n if (trimmed.startsWith(\"#\")) {\n return { kind: \"channel\", channel: trimmed };\n }\n if (isChannelId(trimmed)) {\n return { kind: \"channel\", channel: trimmed };\n }\n\n // Allow bare channel names (\"general\") for convenience.\n return { kind: \"channel\", channel: `#${trimmed}` };\n}\n",
37
+ "import { parseSlackMessageUrl, type SlackMessageRef } from \"../slack/url.ts\";\nimport { isChannelId, isUserId } from \"../slack/channels.ts\";\n\nexport type MsgTarget =\n | { kind: \"url\"; ref: SlackMessageRef }\n | { kind: \"channel\"; channel: string }\n | { kind: \"user\"; userId: string };\n\nexport function parseMsgTarget(input: string): MsgTarget {\n const trimmed = input.trim();\n if (!trimmed) {\n throw new Error(\"Missing target\");\n }\n\n try {\n const ref = parseSlackMessageUrl(trimmed);\n return { kind: \"url\", ref };\n } catch {\n // not a slack message URL\n }\n\n if (isUserId(trimmed)) {\n return { kind: \"user\", userId: trimmed };\n }\n if (trimmed.startsWith(\"#\")) {\n return { kind: \"channel\", channel: trimmed };\n }\n if (isChannelId(trimmed)) {\n return { kind: \"channel\", channel: trimmed };\n }\n\n // Allow bare channel names (\"general\") for convenience.\n return { kind: \"channel\", channel: `#${trimmed}` };\n}\n",
38
38
  "import type { SlackAuth } from \"../slack/client.ts\";\nimport type { SlackMessageSummary } from \"../slack/messages.ts\";\nimport { ensureDownloadsDir } from \"../lib/tmp-paths.ts\";\nimport { downloadSlackFile } from \"../slack/files.ts\";\nimport { htmlToMarkdown } from \"../slack/html-to-md.ts\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nfunction inferFileExtension(file: {\n mimetype?: string;\n filetype?: string;\n name?: string;\n title?: string;\n}): string | null {\n const mt = (file.mimetype || \"\").toLowerCase();\n const ft = (file.filetype || \"\").toLowerCase();\n\n if (mt === \"image/png\" || ft === \"png\") {\n return \"png\";\n }\n if (mt === \"image/jpeg\" || mt === \"image/jpg\" || ft === \"jpg\" || ft === \"jpeg\") {\n return \"jpg\";\n }\n if (mt === \"image/webp\" || ft === \"webp\") {\n return \"webp\";\n }\n if (mt === \"image/gif\" || ft === \"gif\") {\n return \"gif\";\n }\n\n if (mt === \"text/plain\" || ft === \"text\") {\n return \"txt\";\n }\n if (mt === \"text/markdown\" || ft === \"markdown\" || ft === \"md\") {\n return \"md\";\n }\n if (mt === \"application/json\" || ft === \"json\") {\n return \"json\";\n }\n\n const name = file.name || file.title || \"\";\n const match = name.match(/\\.([A-Za-z0-9]{1,10})$/);\n return match ? match[1]!.toLowerCase() : null;\n}\n\nconst CANVAS_MODES = new Set([\"canvas\", \"quip\", \"docs\"]);\n\nfunction looksLikeAuthPage(html: string): boolean {\n return /<form[^>]+signin|data-qa=\"signin|<title>[^<]*Sign\\s*in/i.test(html);\n}\n\nasync function downloadCanvasAsMarkdown(input: {\n auth: SlackAuth;\n fileId: string;\n url: string;\n destDir: string;\n}): Promise<string> {\n const htmlPath = await downloadSlackFile({\n auth: input.auth,\n url: input.url,\n destDir: input.destDir,\n preferredName: `${input.fileId}.html`,\n options: { allowHtml: true },\n });\n const html = await readFile(htmlPath, \"utf8\");\n if (looksLikeAuthPage(html)) {\n throw new Error(\"Downloaded auth/login page instead of canvas content (token may be expired)\");\n }\n\n const markdown = htmlToMarkdown(html).trim();\n const safeName = `${input.fileId.replace(/[\\\\/<>\"|?*]/g, \"_\")}.md`;\n const markdownPath = join(input.destDir, safeName);\n await writeFile(markdownPath, markdown, \"utf8\");\n return markdownPath;\n}\n\nexport async function downloadMessageFiles(input: {\n auth: SlackAuth;\n messages: SlackMessageSummary[];\n}): Promise<Record<string, string>> {\n const downloadedPaths: Record<string, string> = {};\n const downloadsDir = await ensureDownloadsDir();\n\n for (const message of input.messages) {\n for (const file of message.files ?? []) {\n if (downloadedPaths[file.id]) {\n continue;\n }\n\n const isCanvas = file.mode != null && CANVAS_MODES.has(file.mode);\n const url = isCanvas\n ? file.url_private || file.url_private_download\n : file.url_private_download || file.url_private;\n if (!url) {\n continue;\n }\n\n try {\n if (isCanvas) {\n downloadedPaths[file.id] = await downloadCanvasAsMarkdown({\n auth: input.auth,\n fileId: file.id,\n url,\n destDir: downloadsDir,\n });\n } else {\n const ext = inferFileExtension(file);\n downloadedPaths[file.id] = await downloadSlackFile({\n auth: input.auth,\n url,\n destDir: downloadsDir,\n preferredName: `${file.id}${ext ? `.${ext}` : \"\"}`,\n });\n }\n } catch (err) {\n console.error(\n `Warning: skipping file ${file.id}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n\n return downloadedPaths;\n}\n",
39
39
  "export function warnOnTruncatedSlackUrl(ref: { possiblyTruncated?: boolean }): void {\n if (ref.possiblyTruncated) {\n console.error(\n 'Hint: URL may have been truncated by shell. Quote URLs containing \"&\":\\n' +\n ' agent-slack message get \"https://...?thread_ts=...&cid=...\"',\n );\n }\n}\n",
40
40
  "import type { CompactSlackMessage } from \"../slack/messages.ts\";\nimport { asArray, isRecord } from \"../lib/object-type-guards.ts\";\n\nfunction getNumber(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nexport async function getThreadSummary(\n client: { api: (method: string, params?: Record<string, unknown>) => Promise<unknown> },\n input: {\n channelId: string;\n msg: { ts: string; thread_ts?: string; reply_count?: number };\n },\n): Promise<{ ts: string; length: number } | null> {\n const replyCount = input.msg.reply_count ?? 0;\n const rootTs = input.msg.thread_ts ?? (replyCount > 0 ? input.msg.ts : null);\n if (!rootTs) {\n return null;\n }\n\n if (!input.msg.thread_ts && replyCount > 0) {\n return { ts: rootTs, length: 1 + replyCount };\n }\n\n const resp = await client.api(\"conversations.replies\", {\n channel: input.channelId,\n ts: rootTs,\n limit: 1,\n });\n const [root] = asArray(isRecord(resp) ? resp.messages : undefined);\n const rootReplyCount = isRecord(root) ? getNumber(root.reply_count) : undefined;\n if (rootReplyCount === undefined) {\n return { ts: rootTs, length: 1 };\n }\n return { ts: rootTs, length: 1 + rootReplyCount };\n}\n\nexport function toThreadListMessage(\n m: CompactSlackMessage,\n): Omit<CompactSlackMessage, \"channel_id\" | \"thread_ts\"> {\n const { channel_id: _channelId, thread_ts: _threadTs, ...rest } = m;\n return rest;\n}\n",
41
- "import type { CliContext } from \"./context.ts\";\nimport {\n fetchMessage,\n fetchThread,\n fetchChannelHistory,\n toCompactMessage,\n} from \"../slack/messages.ts\";\nimport { pruneEmpty } from \"../lib/compact-json.ts\";\nimport { parseMsgTarget } from \"./targets.ts\";\nimport { resolveChannelId } from \"../slack/channels.ts\";\nimport { normalizeSlackReactionName } from \"../slack/emoji.ts\";\nimport { downloadMessageFiles } from \"./message-file-downloads.ts\";\nimport { warnOnTruncatedSlackUrl } from \"./message-url-warning.ts\";\nimport { getThreadSummary, toThreadListMessage } from \"./message-thread-info.ts\";\n\nexport type MessageCommandOptions = {\n maxBodyChars: string;\n workspace?: string;\n ts?: string;\n threadTs?: string;\n limit?: string;\n oldest?: string;\n latest?: string;\n withReaction?: string[];\n withoutReaction?: string[];\n includeReactions?: boolean;\n};\n\nexport function parseLimit(raw: string | undefined): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n < 1) {\n throw new Error(`Invalid --limit value \"${raw}\": must be a positive integer`);\n }\n return n;\n}\n\nexport function requireMessageTs(raw: string | undefined): string {\n const ts = raw?.trim();\n if (!ts) {\n throw new Error('When targeting a channel, you must pass --ts \"<seconds>.<micros>\"');\n }\n return ts;\n}\n\nexport function parseReactionFilters(raw: string[] | undefined): string[] {\n if (!Array.isArray(raw) || raw.length === 0) {\n return [];\n }\n const out: string[] = [];\n for (const value of raw) {\n const normalized = normalizeSlackReactionName(String(value));\n if (!out.includes(normalized)) {\n out.push(normalized);\n }\n }\n return out;\n}\n\nexport function requireOldestWhenReactionFiltersUsed(input: {\n oldest?: string;\n withReactions: string[];\n withoutReactions: string[];\n}): string | undefined {\n const hasReactionFilters = input.withReactions.length > 0 || input.withoutReactions.length > 0;\n const oldest = input.oldest?.trim();\n if (!hasReactionFilters) {\n return oldest;\n }\n if (!oldest) {\n throw new Error(\n 'Reaction filters require --oldest \"<seconds>.<micros>\" to bound scan size. Example: --oldest \"1770165109.628379\"',\n );\n }\n return oldest;\n}\n\nexport async function handleMessageGet(input: {\n ctx: CliContext;\n targetInput: string;\n options: MessageCommandOptions;\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(input.targetInput);\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n return input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client, auth } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const includeReactions = Boolean(input.options.includeReactions);\n const msg = await fetchMessage(client, { ref, includeReactions });\n const thread = await getThreadSummary(client, { channelId: ref.channel_id, msg });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: [msg] });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n const message = toCompactMessage(msg, { maxBodyChars, includeReactions, downloadedPaths });\n return pruneEmpty({ message, thread }) as Record<string, unknown>;\n }\n\n const ts = input.options.ts?.trim();\n if (!ts) {\n throw new Error('When targeting a channel, you must pass --ts \"<seconds>.<micros>\"');\n }\n\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n\n const includeReactions = Boolean(input.options.includeReactions);\n const { client, auth, workspace_url } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n const ref = {\n workspace_url: workspace_url ?? workspaceUrl ?? \"\",\n channel_id: channelId,\n message_ts: ts,\n thread_ts_hint: input.options.threadTs?.trim() || undefined,\n raw: input.targetInput,\n };\n\n const msg = await fetchMessage(client, { ref, includeReactions });\n const thread = await getThreadSummary(client, { channelId, msg });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: [msg] });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n const message = toCompactMessage(msg, { maxBodyChars, includeReactions, downloadedPaths });\n return pruneEmpty({ message, thread }) as Record<string, unknown>;\n },\n });\n}\n\nexport async function handleMessageList(input: {\n ctx: CliContext;\n targetInput: string;\n options: MessageCommandOptions;\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(input.targetInput);\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n return input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n const withReactions = parseReactionFilters(input.options.withReaction);\n const withoutReactions = parseReactionFilters(input.options.withoutReaction);\n const hasReactionFilters = withReactions.length > 0 || withoutReactions.length > 0;\n\n if (target.kind === \"url\") {\n if (hasReactionFilters) {\n throw new Error(\n \"Reaction filters are only supported for channel history mode (not message URL thread mode)\",\n );\n }\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client, auth } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const includeReactions = Boolean(input.options.includeReactions);\n const msg = await fetchMessage(client, { ref, includeReactions });\n const rootTs = msg.thread_ts ?? msg.ts;\n const threadMessages = await fetchThread(client, {\n channelId: ref.channel_id,\n threadTs: rootTs,\n includeReactions,\n });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: threadMessages });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n return pruneEmpty({\n messages: threadMessages\n .map((m) => toCompactMessage(m, { maxBodyChars, includeReactions, downloadedPaths }))\n .map(toThreadListMessage),\n }) as Record<string, unknown>;\n }\n\n const { client, auth, workspace_url } = await input.ctx.getClientForWorkspace(workspaceUrl);\n\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n\n const channelId = await resolveChannelId(client, target.channel);\n\n const threadTs = input.options.threadTs?.trim();\n const ts = input.options.ts?.trim();\n\n // No thread specifier → list recent channel messages\n if (!threadTs && !ts) {\n const includeReactions = Boolean(input.options.includeReactions);\n const limit = parseLimit(input.options.limit);\n const oldest = requireOldestWhenReactionFiltersUsed({\n oldest: input.options.oldest,\n withReactions,\n withoutReactions,\n });\n const channelMessages = await fetchChannelHistory(client, {\n channelId,\n limit,\n latest: input.options.latest?.trim(),\n oldest,\n includeReactions: includeReactions || hasReactionFilters,\n withReactions,\n withoutReactions,\n });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: channelMessages });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n return pruneEmpty({\n channel_id: channelId,\n messages: channelMessages.map((m) =>\n toCompactMessage(m, { maxBodyChars, includeReactions, downloadedPaths }),\n ),\n }) as Record<string, unknown>;\n }\n\n if (hasReactionFilters) {\n throw new Error(\n \"Reaction filters are only supported for channel history mode (without --thread-ts/--ts)\",\n );\n }\n\n const rootTs =\n threadTs ??\n (await (async () => {\n const ref = {\n workspace_url: workspace_url ?? workspaceUrl ?? \"\",\n channel_id: channelId,\n message_ts: ts!,\n raw: input.targetInput,\n };\n const includeReactions = Boolean(input.options.includeReactions);\n const msg = await fetchMessage(client, { ref, includeReactions });\n return msg.thread_ts ?? msg.ts;\n })());\n\n const includeReactions = Boolean(input.options.includeReactions);\n const threadMessages = await fetchThread(client, {\n channelId,\n threadTs: rootTs,\n includeReactions,\n });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: threadMessages });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n return pruneEmpty({\n messages: threadMessages\n .map((m) => toCompactMessage(m, { maxBodyChars, includeReactions, downloadedPaths }))\n .map(toThreadListMessage),\n }) as Record<string, unknown>;\n },\n });\n}\n\nexport async function sendMessage(input: {\n ctx: CliContext;\n targetInput: string;\n text: string;\n options: { workspace?: string; threadTs?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n await input.ctx.withAutoRefresh({\n workspaceUrl: ref.workspace_url,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const msg = await fetchMessage(client, { ref });\n const threadTs = msg.thread_ts ?? msg.ts;\n await client.api(\"chat.postMessage\", {\n channel: ref.channel_id,\n text: input.text,\n thread_ts: threadTs,\n });\n },\n });\n return { ok: true };\n }\n\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [String(target.channel)],\n });\n await input.ctx.withAutoRefresh({\n workspaceUrl,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, String(target.channel));\n await client.api(\"chat.postMessage\", {\n channel: channelId,\n text: input.text,\n thread_ts: input.options.threadTs ? String(input.options.threadTs) : undefined,\n });\n },\n });\n return { ok: true };\n}\n\nexport async function editMessage(input: {\n ctx: CliContext;\n targetInput: string;\n text: string;\n options: { workspace?: string; ts?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n await input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n await client.api(\"chat.update\", {\n channel: ref.channel_id,\n ts: ref.message_ts,\n text: input.text,\n });\n return;\n }\n\n const ts = requireMessageTs(input.options.ts);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n await client.api(\"chat.update\", {\n channel: channelId,\n ts,\n text: input.text,\n });\n },\n });\n\n return { ok: true };\n}\n\nexport async function deleteMessage(input: {\n ctx: CliContext;\n targetInput: string;\n options: { workspace?: string; ts?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n await input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n await client.api(\"chat.delete\", {\n channel: ref.channel_id,\n ts: ref.message_ts,\n });\n return;\n }\n\n const ts = requireMessageTs(input.options.ts);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n await client.api(\"chat.delete\", {\n channel: channelId,\n ts,\n });\n },\n });\n\n return { ok: true };\n}\n\nexport async function reactOnTarget(input: {\n ctx: CliContext;\n action: \"add\" | \"remove\";\n targetInput: string;\n emoji: string;\n options?: { workspace?: string; ts?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(input.targetInput);\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options?.workspace);\n\n await input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const name = normalizeSlackReactionName(input.emoji);\n await client.api(`reactions.${input.action}`, {\n channel: ref.channel_id,\n timestamp: ref.message_ts,\n name,\n });\n return;\n }\n\n const ts = requireMessageTs(input.options?.ts);\n\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n const name = normalizeSlackReactionName(input.emoji);\n await client.api(`reactions.${input.action}`, {\n channel: channelId,\n timestamp: ts,\n name,\n });\n },\n });\n\n return { ok: true };\n}\n",
41
+ "import type { CliContext } from \"./context.ts\";\nimport {\n fetchMessage,\n fetchThread,\n fetchChannelHistory,\n toCompactMessage,\n} from \"../slack/messages.ts\";\nimport { pruneEmpty } from \"../lib/compact-json.ts\";\nimport { parseMsgTarget } from \"./targets.ts\";\nimport { resolveChannelId, openDmChannel } from \"../slack/channels.ts\";\nimport { normalizeSlackReactionName } from \"../slack/emoji.ts\";\nimport { downloadMessageFiles } from \"./message-file-downloads.ts\";\nimport { warnOnTruncatedSlackUrl } from \"./message-url-warning.ts\";\nimport { getThreadSummary, toThreadListMessage } from \"./message-thread-info.ts\";\n\nexport type MessageCommandOptions = {\n maxBodyChars: string;\n workspace?: string;\n ts?: string;\n threadTs?: string;\n limit?: string;\n oldest?: string;\n latest?: string;\n withReaction?: string[];\n withoutReaction?: string[];\n includeReactions?: boolean;\n};\n\nexport function parseLimit(raw: string | undefined): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n < 1) {\n throw new Error(`Invalid --limit value \"${raw}\": must be a positive integer`);\n }\n return n;\n}\n\nexport function requireMessageTs(raw: string | undefined): string {\n const ts = raw?.trim();\n if (!ts) {\n throw new Error('When targeting a channel, you must pass --ts \"<seconds>.<micros>\"');\n }\n return ts;\n}\n\nexport function parseReactionFilters(raw: string[] | undefined): string[] {\n if (!Array.isArray(raw) || raw.length === 0) {\n return [];\n }\n const out: string[] = [];\n for (const value of raw) {\n const normalized = normalizeSlackReactionName(String(value));\n if (!out.includes(normalized)) {\n out.push(normalized);\n }\n }\n return out;\n}\n\nexport function requireOldestWhenReactionFiltersUsed(input: {\n oldest?: string;\n withReactions: string[];\n withoutReactions: string[];\n}): string | undefined {\n const hasReactionFilters = input.withReactions.length > 0 || input.withoutReactions.length > 0;\n const oldest = input.oldest?.trim();\n if (!hasReactionFilters) {\n return oldest;\n }\n if (!oldest) {\n throw new Error(\n 'Reaction filters require --oldest \"<seconds>.<micros>\" to bound scan size. Example: --oldest \"1770165109.628379\"',\n );\n }\n return oldest;\n}\n\nexport async function handleMessageGet(input: {\n ctx: CliContext;\n targetInput: string;\n options: MessageCommandOptions;\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(input.targetInput);\n if (target.kind === \"user\") {\n throw new Error(\n \"message get does not support user ID targets. Use a channel name, channel ID, or message URL.\",\n );\n }\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n return input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client, auth } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const includeReactions = Boolean(input.options.includeReactions);\n const msg = await fetchMessage(client, { ref, includeReactions });\n const thread = await getThreadSummary(client, { channelId: ref.channel_id, msg });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: [msg] });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n const message = toCompactMessage(msg, { maxBodyChars, includeReactions, downloadedPaths });\n return pruneEmpty({ message, thread }) as Record<string, unknown>;\n }\n\n const ts = input.options.ts?.trim();\n if (!ts) {\n throw new Error('When targeting a channel, you must pass --ts \"<seconds>.<micros>\"');\n }\n\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n\n const includeReactions = Boolean(input.options.includeReactions);\n const { client, auth, workspace_url } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n const ref = {\n workspace_url: workspace_url ?? workspaceUrl ?? \"\",\n channel_id: channelId,\n message_ts: ts,\n thread_ts_hint: input.options.threadTs?.trim() || undefined,\n raw: input.targetInput,\n };\n\n const msg = await fetchMessage(client, { ref, includeReactions });\n const thread = await getThreadSummary(client, { channelId, msg });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: [msg] });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n const message = toCompactMessage(msg, { maxBodyChars, includeReactions, downloadedPaths });\n return pruneEmpty({ message, thread }) as Record<string, unknown>;\n },\n });\n}\n\nexport async function handleMessageList(input: {\n ctx: CliContext;\n targetInput: string;\n options: MessageCommandOptions;\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(input.targetInput);\n if (target.kind === \"user\") {\n throw new Error(\n \"message list does not support user ID targets. Use a channel name, channel ID, or message URL.\",\n );\n }\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n return input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n const withReactions = parseReactionFilters(input.options.withReaction);\n const withoutReactions = parseReactionFilters(input.options.withoutReaction);\n const hasReactionFilters = withReactions.length > 0 || withoutReactions.length > 0;\n\n if (target.kind === \"url\") {\n if (hasReactionFilters) {\n throw new Error(\n \"Reaction filters are only supported for channel history mode (not message URL thread mode)\",\n );\n }\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client, auth } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const includeReactions = Boolean(input.options.includeReactions);\n const msg = await fetchMessage(client, { ref, includeReactions });\n const rootTs = msg.thread_ts ?? msg.ts;\n const threadMessages = await fetchThread(client, {\n channelId: ref.channel_id,\n threadTs: rootTs,\n includeReactions,\n });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: threadMessages });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n return pruneEmpty({\n messages: threadMessages\n .map((m) => toCompactMessage(m, { maxBodyChars, includeReactions, downloadedPaths }))\n .map(toThreadListMessage),\n }) as Record<string, unknown>;\n }\n\n const { client, auth, workspace_url } = await input.ctx.getClientForWorkspace(workspaceUrl);\n\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n\n const channelId = await resolveChannelId(client, target.channel);\n\n const threadTs = input.options.threadTs?.trim();\n const ts = input.options.ts?.trim();\n\n // No thread specifier → list recent channel messages\n if (!threadTs && !ts) {\n const includeReactions = Boolean(input.options.includeReactions);\n const limit = parseLimit(input.options.limit);\n const oldest = requireOldestWhenReactionFiltersUsed({\n oldest: input.options.oldest,\n withReactions,\n withoutReactions,\n });\n const channelMessages = await fetchChannelHistory(client, {\n channelId,\n limit,\n latest: input.options.latest?.trim(),\n oldest,\n includeReactions: includeReactions || hasReactionFilters,\n withReactions,\n withoutReactions,\n });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: channelMessages });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n return pruneEmpty({\n channel_id: channelId,\n messages: channelMessages.map((m) =>\n toCompactMessage(m, { maxBodyChars, includeReactions, downloadedPaths }),\n ),\n }) as Record<string, unknown>;\n }\n\n if (hasReactionFilters) {\n throw new Error(\n \"Reaction filters are only supported for channel history mode (without --thread-ts/--ts)\",\n );\n }\n\n const rootTs =\n threadTs ??\n (await (async () => {\n const ref = {\n workspace_url: workspace_url ?? workspaceUrl ?? \"\",\n channel_id: channelId,\n message_ts: ts!,\n raw: input.targetInput,\n };\n const includeReactions = Boolean(input.options.includeReactions);\n const msg = await fetchMessage(client, { ref, includeReactions });\n return msg.thread_ts ?? msg.ts;\n })());\n\n const includeReactions = Boolean(input.options.includeReactions);\n const threadMessages = await fetchThread(client, {\n channelId,\n threadTs: rootTs,\n includeReactions,\n });\n const downloadedPaths = await downloadMessageFiles({ auth, messages: threadMessages });\n const maxBodyChars = Number.parseInt(input.options.maxBodyChars, 10);\n return pruneEmpty({\n messages: threadMessages\n .map((m) => toCompactMessage(m, { maxBodyChars, includeReactions, downloadedPaths }))\n .map(toThreadListMessage),\n }) as Record<string, unknown>;\n },\n });\n}\n\nexport async function sendMessage(input: {\n ctx: CliContext;\n targetInput: string;\n text: string;\n options: { workspace?: string; threadTs?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n await input.ctx.withAutoRefresh({\n workspaceUrl: ref.workspace_url,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const msg = await fetchMessage(client, { ref });\n const threadTs = msg.thread_ts ?? msg.ts;\n await client.api(\"chat.postMessage\", {\n channel: ref.channel_id,\n text: input.text,\n thread_ts: threadTs,\n });\n },\n });\n return { ok: true };\n }\n\n if (target.kind === \"user\") {\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n await input.ctx.withAutoRefresh({\n workspaceUrl,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const dmChannelId = await openDmChannel(client, target.userId);\n await client.api(\"chat.postMessage\", {\n channel: dmChannelId,\n text: input.text,\n });\n },\n });\n return { ok: true };\n }\n\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [String(target.channel)],\n });\n await input.ctx.withAutoRefresh({\n workspaceUrl,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, String(target.channel));\n await client.api(\"chat.postMessage\", {\n channel: channelId,\n text: input.text,\n thread_ts: input.options.threadTs ? String(input.options.threadTs) : undefined,\n });\n },\n });\n return { ok: true };\n}\n\nexport async function editMessage(input: {\n ctx: CliContext;\n targetInput: string;\n text: string;\n options: { workspace?: string; ts?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n if (target.kind === \"user\") {\n throw new Error(\n \"message edit does not support user ID targets. Use a channel name, channel ID, or message URL.\",\n );\n }\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n await input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n await client.api(\"chat.update\", {\n channel: ref.channel_id,\n ts: ref.message_ts,\n text: input.text,\n });\n return;\n }\n\n const ts = requireMessageTs(input.options.ts);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n await client.api(\"chat.update\", {\n channel: channelId,\n ts,\n text: input.text,\n });\n },\n });\n\n return { ok: true };\n}\n\nexport async function deleteMessage(input: {\n ctx: CliContext;\n targetInput: string;\n options: { workspace?: string; ts?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n if (target.kind === \"user\") {\n throw new Error(\n \"message delete does not support user ID targets. Use a channel name, channel ID, or message URL.\",\n );\n }\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n\n await input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n await client.api(\"chat.delete\", {\n channel: ref.channel_id,\n ts: ref.message_ts,\n });\n return;\n }\n\n const ts = requireMessageTs(input.options.ts);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n await client.api(\"chat.delete\", {\n channel: channelId,\n ts,\n });\n },\n });\n\n return { ok: true };\n}\n\nexport async function reactOnTarget(input: {\n ctx: CliContext;\n action: \"add\" | \"remove\";\n targetInput: string;\n emoji: string;\n options?: { workspace?: string; ts?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(input.targetInput);\n if (target.kind === \"user\") {\n throw new Error(\n \"react does not support user ID targets. Use a channel name, channel ID, or message URL.\",\n );\n }\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options?.workspace);\n\n await input.ctx.withAutoRefresh({\n workspaceUrl: target.kind === \"url\" ? target.ref.workspace_url : workspaceUrl,\n work: async () => {\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const name = normalizeSlackReactionName(input.emoji);\n await client.api(`reactions.${input.action}`, {\n channel: ref.channel_id,\n timestamp: ref.message_ts,\n name,\n });\n return;\n }\n\n const ts = requireMessageTs(input.options?.ts);\n\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [target.channel],\n });\n\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, target.channel);\n const name = normalizeSlackReactionName(input.emoji);\n await client.api(`reactions.${input.action}`, {\n channel: channelId,\n timestamp: ts,\n name,\n });\n },\n });\n\n return { ok: true };\n}\n",
42
42
  "import { createServer, type IncomingMessage, type Server } from \"node:http\";\nimport { exec } from \"node:child_process\";\n\nexport type DraftEditorConfig = {\n channelName: string;\n channelId?: string;\n workspaceUrl?: string;\n threadTs?: string;\n initialText?: string;\n onSend: (mrkdwn: string) => Promise<{ ts: string }>;\n};\n\nexport type DraftResult = { sent: true; text: string } | { cancelled: true };\n\nexport function openDraftEditor(config: DraftEditorConfig): Promise<DraftResult> {\n return new Promise<DraftResult>((resolve, reject) => {\n let settled = false;\n\n const server: Server = createServer(async (req, res) => {\n if (req.method === \"GET\" && (req.url === \"/\" || req.url === \"/index.html\")) {\n const html = buildEditorHtml(config);\n res.writeHead(200, { \"Content-Type\": \"text/html; charset=utf-8\" });\n res.end(html);\n return;\n }\n\n if (req.method === \"POST\" && req.url === \"/send\") {\n try {\n const body = await readBody(req);\n const data = JSON.parse(body) as { text: string };\n if (typeof data.text !== \"string\" || !data.text.trim()) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"text is required\" }));\n return;\n }\n const sendResult = await config.onSend(data.text);\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: true, ts: sendResult.ts }));\n settled = true;\n resolve({ sent: true, text: data.text });\n setTimeout(() => server.close(), 300);\n } catch (err: unknown) {\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: String(err) }));\n }\n return;\n }\n\n if (req.method === \"POST\" && req.url === \"/cancel\") {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: true }));\n settled = true;\n resolve({ cancelled: true });\n setTimeout(() => server.close(), 300);\n return;\n }\n\n res.writeHead(404);\n res.end(\"Not found\");\n });\n\n server.on(\"error\", (err) => {\n if (!settled) {\n reject(err);\n }\n });\n\n server.on(\"close\", () => {\n clearTimeout(idleTimeout);\n if (!settled) {\n settled = true;\n resolve({ cancelled: true });\n }\n });\n\n const idleTimeout = setTimeout(\n () => {\n if (!settled) {\n server.close();\n }\n },\n 30 * 60 * 1000,\n );\n\n server.listen(0, \"127.0.0.1\", () => {\n const addr = server.address();\n const port = typeof addr === \"object\" && addr ? addr.port : 0;\n const url = `http://127.0.0.1:${port}`;\n process.stderr.write(`Draft editor: ${url}\\n`);\n openBrowser(url);\n });\n });\n}\n\nfunction readBody(req: IncomingMessage): Promise<string> {\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n req.on(\"data\", (chunk: Buffer) => chunks.push(chunk));\n req.on(\"end\", () => resolve(Buffer.concat(chunks).toString()));\n req.on(\"error\", reject);\n });\n}\n\nfunction openBrowser(url: string): void {\n const cmd =\n process.platform === \"darwin\" ? \"open\" : process.platform === \"win32\" ? \"start\" : \"xdg-open\";\n exec(`${cmd} \"${url}\"`, () => {});\n}\n\nfunction buildSlackThreadUrl(config: DraftEditorConfig): string | null {\n if (!config.workspaceUrl || !config.channelId || !config.threadTs) {\n return null;\n }\n const tsNoDot = config.threadTs.replace(\".\", \"\");\n return `${config.workspaceUrl.replace(/\\/$/, \"\")}/archives/${config.channelId}/p${tsNoDot}`;\n}\n\nfunction extractWorkspaceName(url?: string): string | null {\n if (!url) {\n return null;\n }\n try {\n const host = new URL(url).hostname; // e.g. \"stablygroup.slack.com\"\n const parts = host.split(\".\");\n if (parts.length >= 3 && parts.at(-2) === \"slack\") {\n return parts.slice(0, -2).join(\".\"); // e.g. \"stablygroup\"\n }\n return host;\n } catch {\n return null;\n }\n}\n\nfunction buildEditorHtml(config: DraftEditorConfig): string {\n const threadUrl = buildSlackThreadUrl(config);\n const workspaceName = extractWorkspaceName(config.workspaceUrl);\n const injectedConfig = JSON.stringify({\n channelName: config.channelName,\n channelId: config.channelId || null,\n workspaceUrl: config.workspaceUrl || null,\n workspaceName,\n threadTs: config.threadTs || null,\n threadUrl,\n initialText: config.initialText || \"\",\n });\n\n return EDITOR_HTML.replace(\"__DRAFT_CONFIG__\", injectedConfig.replace(/</g, \"\\\\u003c\"));\n}\n\n// ---------------------------------------------------------------------------\n// Self-contained HTML editor — Slack-faithful draft composer\n// ---------------------------------------------------------------------------\n// NOTE: The template below is intentionally large (~900 lines). It is a fully\n// self-contained HTML page with CSS + JS — no external dependencies.\n\nconst EDITOR_HTML = /* html */ `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Draft Message — Agent Slack</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap\" rel=\"stylesheet\">\n<style>\n :root {\n --bg: #1a1d21;\n --surface: #222529;\n --surface-raised: #2c2d31;\n --border: #393b3f;\n --border-focus: #1264a3;\n --text: #d1d2d3;\n --text-secondary: #ababad;\n --text-muted: #696a6d;\n --green: #007a5a;\n --green-hover: #148567;\n --red: #e01e5a;\n --blue: #1264a3;\n --blue-link: #1d9bd1;\n --code-bg: #1a1d21;\n --blockquote-border: #616061;\n --toolbar-active: rgba(29,155,209,0.15);\n }\n\n * { margin: 0; padding: 0; box-sizing: border-box; }\n\n body {\n font-family: Slack-Lato, Lato, appleLogo, sans-serif;\n background: var(--bg);\n color: var(--text);\n display: flex;\n align-items: flex-start;\n justify-content: center;\n min-height: 100vh;\n padding: 40px 24px;\n }\n\n .page {\n width: 100%;\n max-width: 720px;\n display: flex;\n flex-direction: column;\n align-items: center;\n animation: fadeIn 0.18s ease-out;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n }\n\n /* ── Branding ── */\n .brand {\n position: relative;\n text-align: center;\n margin-bottom: 20px;\n user-select: none;\n }\n .brand-name {\n font-size: 17px;\n font-weight: 900;\n letter-spacing: -0.3px;\n color: var(--text);\n }\n .brand-byline {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 2px;\n justify-content: center;\n font-family: 'Inter', sans-serif;\n font-size: 10px;\n font-weight: 500;\n color: rgba(255,255,255,0.5);\n }\n .brand-byline a {\n color: rgba(255,255,255,0.6);\n text-decoration: none;\n }\n .brand-byline a:hover {\n color: rgba(255,255,255,0.8);\n }\n .brand-sub {\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n color: var(--text-muted);\n margin-top: 8px;\n }\n .brand-byline img {\n width: 12px;\n height: 12px;\n opacity: 0.6;\n vertical-align: -1px;\n }\n\n /* ── Context bar ── */\n .context-bar {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 4px;\n margin-bottom: 10px;\n font-size: 13px;\n color: var(--text-secondary);\n }\n\n .context-bar .hash-icon {\n width: 15px;\n height: 15px;\n color: var(--text-muted);\n flex-shrink: 0;\n }\n\n .context-bar .channel {\n font-weight: 700;\n color: var(--text);\n }\n\n .context-bar .workspace-label {\n color: var(--text-muted);\n font-size: 13px;\n margin-left: 8px;\n }\n\n .context-bar .thread-link {\n margin-left: auto;\n font-size: 12px;\n color: var(--blue-link);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n .context-bar .thread-link:hover { text-decoration: underline; }\n .context-bar .thread-link svg {\n width: 12px;\n height: 12px;\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n }\n\n /* ── Composer card ── */\n .composer {\n width: 100%;\n background: var(--surface);\n border: 1px solid #818385;\n border-radius: 8px;\n overflow: hidden;\n transition: border-color 0.15s;\n }\n\n .composer:focus-within {\n border-color: var(--border-focus);\n }\n\n /* ── Toolbar ── */\n .toolbar {\n display: flex;\n align-items: center;\n gap: 1px;\n padding: 4px 8px;\n border-bottom: 1px solid var(--border);\n background: var(--surface);\n }\n\n .toolbar-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--text-secondary);\n cursor: pointer;\n font-size: 13px;\n font-family: inherit;\n transition: all 0.08s;\n position: relative;\n flex-shrink: 0;\n }\n\n .toolbar-btn:hover {\n background: var(--surface-raised);\n color: var(--text);\n }\n\n .toolbar-btn.active {\n background: var(--toolbar-active);\n color: var(--blue-link);\n }\n\n .toolbar-btn.disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n\n .toolbar-btn svg { width: 16px; height: 16px; fill: currentColor; }\n .toolbar-btn .b { font-weight: 800; font-size: 15px; line-height: 1; }\n .toolbar-btn .i { font-style: italic; font-weight: 600; font-size: 15px; font-family: Georgia, serif; line-height: 1; }\n .toolbar-btn .s { text-decoration: line-through; font-weight: 600; font-size: 13px; line-height: 1; }\n\n .toolbar-sep {\n width: 1px;\n height: 20px;\n background: var(--border);\n margin: 0 4px;\n flex-shrink: 0;\n }\n\n /* Tooltip */\n .toolbar-btn[data-tip]::after {\n content: attr(data-tip);\n position: absolute;\n bottom: calc(100% + 6px);\n left: 50%;\n transform: translateX(-50%);\n background: #1d1d1d;\n color: #e0e0e0;\n font-size: 11px;\n font-weight: 400;\n font-style: normal;\n text-decoration: none;\n padding: 4px 8px;\n border-radius: 6px;\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.12s;\n z-index: 20;\n }\n .toolbar-btn:hover[data-tip]::after { opacity: 1; }\n\n /* ── Editor ── */\n .editor {\n min-height: 200px;\n max-height: 55vh;\n overflow-y: auto;\n padding: 12px 16px;\n font-size: 15px;\n line-height: 1.46668;\n color: var(--text);\n outline: none;\n word-wrap: break-word;\n overflow-wrap: break-word;\n }\n\n .editor:empty::before {\n content: attr(data-placeholder);\n color: var(--text-muted);\n pointer-events: none;\n }\n\n .editor b, .editor strong { font-weight: 700; }\n .editor i, .editor em { font-style: italic; }\n .editor s, .editor strike, .editor del { text-decoration: line-through; }\n\n .editor code {\n background: var(--code-bg);\n border: 1px solid var(--border);\n border-radius: 3px;\n padding: 2px 4px;\n font-family: Monaco, Menlo, Consolas, 'Courier New', monospace;\n font-size: 12px;\n color: #e06c75;\n }\n\n .editor pre {\n background: var(--code-bg);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 8px 12px;\n margin: 4px 0;\n font-family: Monaco, Menlo, Consolas, 'Courier New', monospace;\n font-size: 12px;\n line-height: 1.5;\n overflow-x: auto;\n white-space: pre-wrap;\n color: var(--text);\n }\n\n .editor pre code {\n background: none;\n border: none;\n padding: 0;\n font-size: inherit;\n color: inherit;\n }\n\n /* Adjacent <pre> elements look like one code block (browser splits on Enter) */\n .editor pre + pre,\n .editor pre + br + pre {\n border-top: none;\n margin-top: -4px; /* collapse gap */\n padding-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .editor pre:has(+ pre),\n .editor pre:has(+ br + pre) {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .editor blockquote {\n border-left: 4px solid var(--blockquote-border);\n padding: 4px 0 4px 16px;\n margin: 4px 0;\n color: var(--text-secondary);\n }\n\n .editor ul, .editor ol { padding-left: 26px; margin: 4px 0; }\n .editor li { margin: 2px 0; }\n .editor a { color: var(--blue-link); text-decoration: none; }\n .editor a:hover { text-decoration: underline; }\n\n /* ── Source textarea ── */\n .source-editor {\n display: none;\n min-height: 200px;\n max-height: 55vh;\n width: 100%;\n padding: 12px 16px;\n font-family: Monaco, Menlo, Consolas, 'Courier New', monospace;\n font-size: 13px;\n line-height: 1.5;\n background: var(--surface);\n color: var(--text);\n border: none;\n outline: none;\n resize: vertical;\n }\n\n /* ── Bottom bar ── */\n .bottom-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 10px;\n border-top: 1px solid var(--border);\n background: var(--surface);\n }\n\n .bottom-left {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .hint {\n font-size: 12px;\n color: var(--text-muted);\n }\n .hint kbd {\n background: var(--surface-raised);\n border: 1px solid var(--border);\n border-radius: 3px;\n padding: 1px 4px;\n font-family: inherit;\n font-size: 11px;\n }\n\n .btn-send {\n background: var(--green);\n color: #fff;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.1s;\n flex-shrink: 0;\n }\n .btn-send:hover { background: var(--green-hover); }\n .btn-send:disabled { opacity: 0.3; cursor: not-allowed; }\n .btn-send svg { width: 16px; height: 16px; fill: currentColor; }\n\n .cancel-link {\n background: none;\n border: none;\n color: var(--text-muted);\n font-size: 12px;\n font-family: inherit;\n cursor: pointer;\n padding: 4px 6px;\n }\n .cancel-link:hover { color: var(--text-secondary); text-decoration: underline; }\n\n .btn-aa {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--text-secondary);\n cursor: pointer;\n font-size: 14px;\n font-weight: 700;\n font-family: inherit;\n transition: all 0.08s;\n flex-shrink: 0;\n }\n .btn-aa:hover { background: var(--surface-raised); color: var(--text); }\n .btn-aa.active { background: var(--toolbar-active); color: var(--blue-link); }\n\n .btn-source {\n background: transparent;\n color: var(--text-muted);\n font-size: 11px;\n font-weight: 600;\n padding: 3px 6px;\n border-radius: 4px;\n border: 1px solid transparent;\n cursor: pointer;\n font-family: Monaco, Menlo, Consolas, monospace;\n }\n .btn-source:hover { color: var(--text-secondary); border-color: var(--border); }\n .btn-source.active { color: var(--blue-link); border-color: rgba(29,155,209,0.3); }\n\n /* ── Inline link popover (Slack-style two-field) ── */\n .link-popover {\n display: none;\n position: absolute;\n z-index: 30;\n background: var(--surface-raised);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 12px 14px;\n box-shadow: 0 4px 20px rgba(0,0,0,0.5);\n flex-direction: column;\n gap: 8px;\n width: 340px;\n }\n .link-popover.visible { display: flex; }\n\n .link-popover label {\n font-size: 12px;\n font-weight: 600;\n color: var(--text-secondary);\n display: block;\n margin-bottom: 3px;\n }\n\n .link-popover input {\n width: 100%;\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 6px 8px;\n font-size: 13px;\n color: var(--text);\n font-family: inherit;\n outline: none;\n }\n .link-popover input:focus { border-color: var(--border-focus); }\n .link-popover input::placeholder { color: var(--text-muted); }\n\n .link-popover .popover-actions {\n display: flex;\n justify-content: flex-end;\n gap: 6px;\n margin-top: 2px;\n }\n\n .link-popover .popover-btn {\n border: none;\n border-radius: 4px;\n padding: 5px 12px;\n font-size: 12px;\n font-weight: 700;\n cursor: pointer;\n font-family: inherit;\n }\n .link-popover .popover-btn-save {\n background: var(--green);\n color: #fff;\n }\n .link-popover .popover-btn-save:hover { background: var(--green-hover); }\n .link-popover .popover-btn-cancel {\n background: transparent;\n color: var(--text-muted);\n }\n .link-popover .popover-btn-cancel:hover { color: var(--text-secondary); }\n\n /* ── Result overlay ── */\n .overlay {\n display: none;\n position: fixed;\n inset: 0;\n background: rgba(0,0,0,0.8);\n z-index: 100;\n align-items: center;\n justify-content: center;\n }\n .overlay.visible { display: flex; }\n\n .overlay-msg {\n text-align: center;\n font-size: 18px;\n font-weight: 600;\n }\n .overlay-msg.success { color: #2eb67d; }\n .overlay-msg.error { color: var(--red); }\n .overlay-msg small {\n display: block;\n margin-top: 8px;\n font-size: 13px;\n font-weight: 400;\n color: var(--text-muted);\n }\n\n /* Scrollbar */\n .editor::-webkit-scrollbar { width: 6px; }\n .editor::-webkit-scrollbar-track { background: transparent; }\n .editor::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }\n</style>\n</head>\n<body>\n\n<div class=\"page\">\n <!-- Branding -->\n <div class=\"brand\">\n <div class=\"brand-name\">Agent Slack</div>\n <div class=\"brand-byline\">By <a href=\"https://stably.ai\" target=\"_blank\" rel=\"noopener\"><img src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM3OCIgaGVpZ2h0PSIyMzc4IiB2aWV3Qm94PSIwIDAgMjM3OCAyMzc4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTZfNDcpIj4KPHBhdGggZD0iTTExODguOTQgNjE4LjY0NUMxNTAwLjY5IDYxOC42NDUgMTc1My4zNiA4NzEuMzIyIDE3NTMuMzYgMTE4My4wNEMxNzUzLjM2IDE0OTQuNzIgMTUwMC42OSAxNzQ3LjM5IDExODguOTQgMTc0Ny4zOUM4NzcuMjUyIDE3NDcuMzkgNjI0LjU0NyAxNDk0LjcyIDYyNC41NDcgMTE4My4wNEM2MjQuNTQ3IDg3MS4zMTcgODc3LjI1MiA2MTguNjQ1IDExODguOTQgNjE4LjY0NVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMTg4Ljk0IDBDMTA0MC44MSAwIDg5OS40NiAyOC40NTgxIDc2OC42MTkgNzguMTc0MkM3OTcuMjAyIDEwNy4yMDMgODIwLjg0IDE0MC45OTIgODM4Ljk5IDE3OC4wNTJDOTQ4Ljg2MSAxMzkuODE4IDEwNjYuMzUgMTE4LjA1NSAxMTg5IDExOC4wNTVDMTc3OS41IDExOC4wNTUgMjI1OS44NSA1OTguNTYxIDIyNTkuODUgMTE4OC45NEMyMjU5Ljg1IDE3NzkuMzEgMTc3OS41IDIyNTkuOTEgMTE4OC45NCAyMjU5LjkxQzU5OC41MDEgMjI1OS45MSAxMTguMTIgMTc3OS4zNyAxMTguMTIgMTE4OUMxMTguMTIgOTkwLjEwNiAxNzMuNjA3IDgwNC40MDggMjY4LjQwOSA2NDQuNjNDMjM1LjkxOSA2MTkuNzU5IDIwNy4yNzEgNTg5LjkzNyAxODQuMzI4IDU1NS45NThDNjguMjEzNiA3MzkuNDkzIDAgOTU2LjE4NiAwIDExODlDMCAxODQ0LjYgNTMzLjMzIDIzNzguMDEgMTE4OC45NCAyMzc4LjAxQzE4NDQuNiAyMzc4LjAxIDIzNzggMTg0NC42MSAyMzc4IDExODlDMjM3OCA1MzMuMzk1IDE4NDQuNiAwIDExODguOTQgMFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik00OTguNjI0IDExMS4xMUM2MzMuMjA5IDExMS4xMSA3NDIuMjg3IDIyMC4xODggNzQyLjI4NyAzNTQuNzczQzc0Mi4yODcgNDg5LjM1OCA2MzMuMjA5IDU5OC40MzYgNDk4LjYyNCA1OTguNDM2QzM2NC4wNzEgNTk4LjQzNiAyNTQuOTYxIDQ4OS4zNTggMjU0Ljk2MSAzNTQuNzczQzI1NC45NjEgMjIwLjE4OCAzNjQuMDcxIDExMS4xMSA0OTguNjI0IDExMS4xMVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTZfNDciPgo8cmVjdCB3aWR0aD0iMjM3OCIgaGVpZ2h0PSIyMzc4IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=\" alt=\"\" /></a><a href=\"https://stably.ai\" target=\"_blank\" rel=\"noopener\">Stably.ai</a></div>\n <div class=\"brand-sub\">draft mode</div>\n </div>\n\n <!-- Context: channel + thread link -->\n <div class=\"context-bar\">\n <svg class=\"hash-icon\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\n <line x1=\"7.5\" y1=\"2\" x2=\"6\" y2=\"18\"/><line x1=\"14\" y1=\"2\" x2=\"12.5\" y2=\"18\"/>\n <line x1=\"3\" y1=\"7\" x2=\"17.5\" y2=\"7\"/><line x1=\"2.5\" y1=\"13\" x2=\"17\" y2=\"13\"/>\n </svg>\n <span class=\"channel\" id=\"channelName\"></span>\n <span class=\"workspace-label\" id=\"workspaceName\"></span>\n <a class=\"thread-link\" id=\"threadLink\" style=\"display:none\" target=\"_blank\">\n <span>View thread</span>\n <svg viewBox=\"0 0 16 16\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 3h7v7\"/><path d=\"M13 3L6 10\"/>\n </svg>\n </a>\n </div>\n\n <!-- Composer -->\n <div class=\"composer\">\n <div class=\"toolbar\" id=\"toolbar\">\n <button class=\"toolbar-btn\" data-cmd=\"bold\" data-tip=\"Bold (&#8984;B)\"><span class=\"b\">B</span></button>\n <button class=\"toolbar-btn\" data-cmd=\"italic\" data-tip=\"Italic (&#8984;I)\"><span class=\"i\">I</span></button>\n <button class=\"toolbar-btn\" data-cmd=\"strikethrough\" data-tip=\"Strikethrough (&#8984;&#8679;X)\"><span class=\"s\">S</span></button>\n <div class=\"toolbar-sep\"></div>\n <button class=\"toolbar-btn\" data-cmd=\"link\" data-tip=\"Link (&#8984;K)\">\n <svg viewBox=\"0 0 16 16\"><path d=\"M6.354 5.5H4a3 3 0 0 0 0 6h3a3 3 0 0 0 2.83-4M9.646 10.5H12a3 3 0 0 0 0-6H9a3 3 0 0 0-2.83 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\"/></svg>\n </button>\n <div class=\"toolbar-sep\"></div>\n <button class=\"toolbar-btn\" data-cmd=\"insertOrderedList\" data-tip=\"Numbered list (&#8984;&#8679;7)\">\n <svg viewBox=\"0 0 16 16\"><text x=\"1\" y=\"5\" font-size=\"5\" fill=\"currentColor\" font-family=\"system-ui\" font-weight=\"600\">1.</text><line x1=\"7\" y1=\"3.5\" x2=\"15\" y2=\"3.5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/><text x=\"1\" y=\"10\" font-size=\"5\" fill=\"currentColor\" font-family=\"system-ui\" font-weight=\"600\">2.</text><line x1=\"7\" y1=\"8.5\" x2=\"15\" y2=\"8.5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/><text x=\"1\" y=\"15\" font-size=\"5\" fill=\"currentColor\" font-family=\"system-ui\" font-weight=\"600\">3.</text><line x1=\"7\" y1=\"13.5\" x2=\"15\" y2=\"13.5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/></svg>\n </button>\n <button class=\"toolbar-btn\" data-cmd=\"insertUnorderedList\" data-tip=\"Bulleted list (&#8984;&#8679;8)\">\n <svg viewBox=\"0 0 16 16\"><circle cx=\"3\" cy=\"3.5\" r=\"1.5\" fill=\"currentColor\"/><line x1=\"7\" y1=\"3.5\" x2=\"15\" y2=\"3.5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/><circle cx=\"3\" cy=\"8.5\" r=\"1.5\" fill=\"currentColor\"/><line x1=\"7\" y1=\"8.5\" x2=\"15\" y2=\"8.5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/><circle cx=\"3\" cy=\"13.5\" r=\"1.5\" fill=\"currentColor\"/><line x1=\"7\" y1=\"13.5\" x2=\"15\" y2=\"13.5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/></svg>\n </button>\n <div class=\"toolbar-sep\"></div>\n <button class=\"toolbar-btn\" data-cmd=\"blockquote\" data-tip=\"Quote (&#8984;&#8679;9)\">\n <svg viewBox=\"0 0 16 16\"><rect x=\"1\" y=\"2\" width=\"2.5\" height=\"12\" rx=\"1\" fill=\"currentColor\" opacity=\"0.5\"/><line x1=\"6\" y1=\"4\" x2=\"15\" y2=\"4\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/><line x1=\"6\" y1=\"8\" x2=\"13\" y2=\"8\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/><line x1=\"6\" y1=\"12\" x2=\"11\" y2=\"12\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\"/></svg>\n </button>\n <div class=\"toolbar-sep\"></div>\n <button class=\"toolbar-btn\" data-cmd=\"code\" data-tip=\"Code (&#8984;E)\">\n <svg viewBox=\"0 0 16 16\"><polyline points=\"5,3 1,8 5,13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><polyline points=\"11,3 15,8 11,13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <button class=\"toolbar-btn\" data-cmd=\"codeblock\" data-tip=\"Code block (&#8984;&#8679;C)\">\n <svg viewBox=\"0 0 16 16\"><rect x=\"1\" y=\"1\" width=\"14\" height=\"14\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"/><polyline points=\"5,5 3,8 5,11\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><polyline points=\"11,5 13,8 11,11\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n </div>\n\n <div\n class=\"editor\"\n id=\"editor\"\n contenteditable=\"true\"\n data-placeholder=\"Message #channel\"\n spellcheck=\"true\"\n ></div>\n\n <textarea class=\"source-editor\" id=\"sourceEditor\" spellcheck=\"false\"></textarea>\n\n <div class=\"bottom-bar\">\n <div class=\"bottom-left\">\n <button class=\"btn-aa active\" id=\"aaToggle\" onclick=\"toggleToolbar()\" data-tip=\"Formatting\">Aa</button>\n <button class=\"btn-source\" id=\"sourceToggle\" onclick=\"toggleSourceMode()\">mrkdwn</button>\n <span class=\"hint\"><kbd id=\"modKey\">&#8984;</kbd><kbd>Enter</kbd> to send</span>\n </div>\n <div style=\"display:flex;align-items:center;gap:8px;\">\n <button class=\"cancel-link\" onclick=\"handleCancel()\">Cancel</button>\n <button class=\"btn-send\" id=\"sendBtn\" onclick=\"handleSend()\" disabled>\n <svg viewBox=\"0 0 20 20\"><path d=\"M1.7 9.1l7.3 1 .01 0L1.7 9.1zm0 1.8l7.3-1-7.3 1zM1.5 2.1c-.2-.7.5-1.3 1.1-1L19 8.9c.6.3.6 1.2 0 1.5L2.6 18.9c-.7.3-1.3-.3-1.1-1l1.8-6.9L11 10 3.3 8.9 1.5 2.1z\"/></svg>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<!-- Inline link popover (Slack-style two-field) -->\n<div class=\"link-popover\" id=\"linkPopover\">\n <div>\n <label>Text</label>\n <input type=\"text\" id=\"linkTextInput\" placeholder=\"Display text\">\n </div>\n <div>\n <label>Link</label>\n <input type=\"text\" id=\"linkUrlInput\" placeholder=\"https://example.com\">\n </div>\n <div class=\"popover-actions\">\n <button class=\"popover-btn popover-btn-cancel\" onclick=\"closeLinkPopover()\">Cancel</button>\n <button class=\"popover-btn popover-btn-save\" onclick=\"applyLink()\">Save</button>\n </div>\n</div>\n\n<!-- Result overlay -->\n<div class=\"overlay\" id=\"resultOverlay\">\n <div class=\"overlay-msg\" id=\"resultMsg\"></div>\n</div>\n\n<script>\n// ─── Config ───\nconst CONFIG = __DRAFT_CONFIG__;\nconst IS_MAC = /Mac|iPhone/.test(navigator.platform);\nconst MOD = IS_MAC ? 'metaKey' : 'ctrlKey';\n\n// ─── Init header ───\ndocument.getElementById('channelName').textContent = CONFIG.channelName;\nif (CONFIG.workspaceName) {\n document.getElementById('workspaceName').textContent = CONFIG.workspaceName;\n}\nif (!IS_MAC) {\n document.getElementById('modKey').textContent = 'Ctrl';\n document.querySelectorAll('[data-tip]').forEach(el => {\n el.dataset.tip = el.dataset.tip.replace(/\\\\u2318/g, 'Ctrl+').replace(/\\\\u21E7/g, 'Shift+');\n });\n}\nif (CONFIG.threadTs) {\n const link = document.getElementById('threadLink');\n link.style.display = '';\n if (CONFIG.threadUrl) {\n link.href = CONFIG.threadUrl;\n } else {\n link.removeAttribute('href');\n link.style.cursor = 'default';\n link.style.color = 'var(--text-muted)';\n }\n}\n\n// ─── Editor refs ───\nconst editor = document.getElementById('editor');\nconst sourceEditor = document.getElementById('sourceEditor');\nconst linkPopover = document.getElementById('linkPopover');\nconst linkUrlInput = document.getElementById('linkUrlInput');\nlet sourceMode = false;\n\n// Set Slack-style placeholder\neditor.dataset.placeholder = 'Message #' + CONFIG.channelName;\n\n// ─── Detect if cursor is inside a code element ───\nfunction isInsideCode(node) {\n let el = node;\n while (el && el !== editor) {\n if (el.nodeType === 1) {\n const tag = el.tagName.toLowerCase();\n if (tag === 'pre' || tag === 'code') { return true; }\n }\n el = el.parentNode;\n }\n return false;\n}\n\nfunction cursorInCode() {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) { return false; }\n return isInsideCode(sel.anchorNode);\n}\n\n// ─── mrkdwn to HTML (initial content) ───\nfunction escapeHtml(t) {\n return t.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');\n}\n\nfunction mrkdwnToHtml(text) {\n if (!text) { return ''; }\n const codeBlocks = [];\n text = text.replace(/\\`\\`\\`([\\\\s\\\\S]*?)\\`\\`\\`/g, (_, code) => {\n codeBlocks.push('<pre>' + escapeHtml(code.trim()) + '</pre>');\n return '\\\\x00CB' + (codeBlocks.length - 1) + '\\\\x00';\n });\n const inlineCodes = [];\n text = text.replace(/\\`([^\\`\\\\n]+)\\`/g, (_, code) => {\n inlineCodes.push('<code>' + escapeHtml(code) + '</code>');\n return '\\\\x00IC' + (inlineCodes.length - 1) + '\\\\x00';\n });\n\n const lines = text.split('\\\\n');\n let html = '', idx = 0;\n while (idx < lines.length) {\n const line = lines[idx];\n if (line.startsWith('> ')) {\n const q = [];\n while (idx < lines.length && lines[idx].startsWith('> ')) { q.push(fmtInline(lines[idx].slice(2))); idx++; }\n html += '<blockquote>' + q.join('<br>') + '</blockquote>'; continue;\n }\n if (/^[\\\\u2022\\\\-\\\\*] /.test(line)) {\n const items = [];\n while (idx < lines.length && /^[\\\\u2022\\\\-\\\\*] /.test(lines[idx])) { items.push('<li>' + fmtInline(lines[idx].replace(/^[\\\\u2022\\\\-\\\\*] /, '')) + '</li>'); idx++; }\n html += '<ul>' + items.join('') + '</ul>'; continue;\n }\n if (/^\\\\d+[\\\\.\\\\)] /.test(line)) {\n const items = [];\n while (idx < lines.length && /^\\\\d+[\\\\.\\\\)] /.test(lines[idx])) { items.push('<li>' + fmtInline(lines[idx].replace(/^\\\\d+[\\\\.\\\\)] /, '')) + '</li>'); idx++; }\n html += '<ol>' + items.join('') + '</ol>'; continue;\n }\n html += (line ? fmtInline(line) : '') + '<br>';\n idx++;\n }\n codeBlocks.forEach((b, i) => { html = html.replace('\\\\x00CB' + i + '\\\\x00', b); });\n inlineCodes.forEach((c, i) => { html = html.replace('\\\\x00IC' + i + '\\\\x00', c); });\n return html.replace(/(<br>)+$/, '');\n}\n\nfunction fmtInline(t) {\n t = t.replace(/<(https?:\\\\/\\\\/[^|>]+)\\\\|([^>]+)>/g, '<a href=\"$1\" target=\"_blank\">$2</a>');\n t = t.replace(/<(https?:\\\\/\\\\/[^>]+)>/g, '<a href=\"$1\" target=\"_blank\">$1</a>');\n t = t.replace(/\\\\*([^\\\\*]+)\\\\*/g, '<b>$1</b>');\n t = t.replace(/(?<![a-zA-Z0-9])_([^_]+)_(?![a-zA-Z0-9])/g, '<i>$1</i>');\n t = t.replace(/~([^~]+)~/g, '<s>$1</s>');\n return t;\n}\n\n// ─── HTML to mrkdwn (submission) ───\nfunction htmlToMrkdwn(root) {\n const visited = new Set();\n function walk(node) {\n if (visited.has(node)) { return ''; }\n if (node.nodeType === 3) { return node.textContent || ''; }\n if (node.nodeType !== 1) { return ''; }\n const el = node;\n const tag = el.tagName.toLowerCase();\n const kids = () => Array.from(el.childNodes).map(walk).join('');\n switch (tag) {\n case 'b': case 'strong': { const c = kids(); return c.trim() ? '*' + c + '*' : c; }\n case 'i': case 'em': { const c = kids(); return c.trim() ? '_' + c + '_' : c; }\n case 's': case 'strike': case 'del': { const c = kids(); return c.trim() ? '~' + c + '~' : c; }\n case 'code': return '\\`' + (el.textContent || '') + '\\`';\n case 'pre': {\n // Collect adjacent pres into one code block\n const lines = [(el.textContent || '').trimEnd()];\n let next = el.nextElementSibling;\n while (next && next.tagName === 'PRE') {\n lines.push((next.textContent || '').trimEnd());\n visited.add(next);\n next = next.nextElementSibling;\n }\n return '\\`\\`\\`\\\\n' + lines.filter(l => l).join('\\\\n') + '\\\\n\\`\\`\\`\\\\n';\n }\n case 'blockquote': { const c = kids().trim(); return c.split('\\\\n').map(l => '> ' + l).join('\\\\n') + '\\\\n'; }\n case 'ul': { let r = ''; for (const li of el.querySelectorAll(':scope > li')) { r += '\\\\u2022 ' + walk(li).trim() + '\\\\n'; } return r; }\n case 'ol': { let r = '', n = 1; for (const li of el.querySelectorAll(':scope > li')) { r += n + '. ' + walk(li).trim() + '\\\\n'; n++; } return r; }\n case 'li': return kids();\n case 'a': { const h = el.getAttribute('href'); const t = kids(); return (h && t && h !== t) ? '<' + h + '|' + t + '>' : (h || t); }\n case 'br': return '\\\\n';\n case 'div': case 'p': {\n const c = kids();\n const p = el.parentElement;\n if (p && ['li','blockquote','td'].includes(p.tagName.toLowerCase())) { return c; }\n return c.endsWith('\\\\n') ? c : c + '\\\\n';\n }\n case 'span': {\n const st = el.style;\n let c = kids();\n if (st.fontWeight === 'bold' || Number(st.fontWeight) >= 700) { c = c.trim() ? '*' + c + '*' : c; }\n if (st.fontStyle === 'italic') { c = c.trim() ? '_' + c + '_' : c; }\n if (st.textDecoration && st.textDecoration.includes('line-through')) { c = c.trim() ? '~' + c + '~' : c; }\n return c;\n }\n default: return kids();\n }\n }\n return walk(root).replace(/\\\\n{3,}/g, '\\\\n\\\\n').trim();\n}\n\n// ─── Init editor content ───\nif (CONFIG.initialText) { editor.innerHTML = mrkdwnToHtml(CONFIG.initialText); }\n\n// ─── Toolbar execution ───\nfunction execCmd(command) {\n // Block formatting inside code (except toggling code off)\n const inCode = cursorInCode();\n if (inCode && command !== 'code' && command !== 'codeblock') { return; }\n\n switch (command) {\n case 'bold':\n case 'italic':\n case 'strikethrough':\n case 'insertOrderedList':\n case 'insertUnorderedList':\n document.execCommand(command, false, null);\n break;\n case 'blockquote':\n document.execCommand('formatBlock', false, 'blockquote');\n break;\n case 'code': {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) { break; }\n // If already in code, unwrap\n if (inCode) {\n const codeEl = sel.anchorNode.nodeType === 1 ? sel.anchorNode : sel.anchorNode.parentElement;\n const code = codeEl.closest('code');\n if (code) {\n const text = document.createTextNode(code.textContent || '');\n code.parentNode.replaceChild(text, code);\n const r = document.createRange(); r.selectNodeContents(text); sel.removeAllRanges(); sel.addRange(r);\n }\n break;\n }\n const range = sel.getRangeAt(0);\n if (range.collapsed) { break; }\n const code = document.createElement('code');\n try { range.surroundContents(code); } catch (_) {\n const frag = range.extractContents(); code.appendChild(frag); range.insertNode(code);\n }\n sel.removeAllRanges();\n const nr = document.createRange(); nr.selectNodeContents(code); sel.addRange(nr);\n break;\n }\n case 'codeblock': {\n if (inCode) { break; } // No nesting\n const sel = window.getSelection();\n if (!sel) { break; }\n const pre = document.createElement('pre');\n if (!sel.isCollapsed) {\n const range = sel.getRangeAt(0);\n pre.textContent = range.extractContents().textContent || '';\n range.insertNode(pre);\n } else {\n pre.innerHTML = '<br>';\n const range = sel.getRangeAt(0);\n range.insertNode(pre);\n const nr = document.createRange(); nr.setStart(pre, 0); nr.collapse(true);\n sel.removeAllRanges(); sel.addRange(nr);\n }\n break;\n }\n case 'link':\n openLinkPopover();\n return; // Don't refocus — popover takes focus\n }\n editor.focus();\n updateToolbarState();\n}\n\n// Toolbar button clicks\ndocument.querySelectorAll('.toolbar-btn[data-cmd]').forEach(btn => {\n btn.addEventListener('mousedown', (e) => {\n e.preventDefault();\n execCmd(btn.dataset.cmd);\n });\n});\n\n// ─── Toolbar state ───\nfunction updateToolbarState() {\n const inCode = cursorInCode();\n document.querySelectorAll('.toolbar-btn[data-cmd]').forEach(btn => {\n const cmd = btn.dataset.cmd;\n // Disable non-code buttons when inside code\n if (inCode && cmd !== 'code' && cmd !== 'codeblock') {\n btn.classList.add('disabled');\n btn.classList.remove('active');\n return;\n }\n btn.classList.remove('disabled');\n let active = false;\n try {\n if (['bold','italic','strikethrough','insertOrderedList','insertUnorderedList'].includes(cmd)) {\n active = document.queryCommandState(cmd);\n }\n if (cmd === 'code') { active = inCode; }\n } catch (_) {}\n btn.classList.toggle('active', active);\n });\n}\n\neditor.addEventListener('keyup', updateToolbarState);\neditor.addEventListener('mouseup', updateToolbarState);\neditor.addEventListener('focus', updateToolbarState);\n\n// ─── Keyboard shortcuts (Slack-identical) ───\neditor.addEventListener('keydown', (e) => {\n const mod = e[MOD];\n\n // Cmd+Enter → Send\n if (mod && e.key === 'Enter') { e.preventDefault(); handleSend(); return; }\n\n // Cmd+B → Bold\n if (mod && !e.shiftKey && e.key === 'b') { e.preventDefault(); execCmd('bold'); return; }\n\n // Cmd+I → Italic\n if (mod && !e.shiftKey && e.key === 'i') { e.preventDefault(); execCmd('italic'); return; }\n\n // Cmd+Shift+X → Strikethrough\n if (mod && e.shiftKey && (e.key === 'X' || e.key === 'x')) { e.preventDefault(); execCmd('strikethrough'); return; }\n\n // Cmd+E → Inline code (Slack's actual shortcut)\n if (mod && !e.shiftKey && e.key === 'e') { e.preventDefault(); execCmd('code'); return; }\n\n // Cmd+Shift+C → Code block\n if (mod && e.shiftKey && (e.key === 'C' || e.key === 'c' || e.code === 'KeyC')) { e.preventDefault(); execCmd('codeblock'); return; }\n\n // Cmd+K → Link\n if (mod && !e.shiftKey && e.key === 'k') { e.preventDefault(); execCmd('link'); return; }\n\n // Cmd+Shift+7 → Numbered list\n if (mod && e.shiftKey && e.key === '7') { e.preventDefault(); execCmd('insertOrderedList'); return; }\n\n // Cmd+Shift+8 → Bulleted list\n if (mod && e.shiftKey && e.key === '8') { e.preventDefault(); execCmd('insertUnorderedList'); return; }\n\n // Cmd+Shift+9 → Blockquote\n if (mod && e.shiftKey && e.key === '9') { e.preventDefault(); execCmd('blockquote'); return; }\n});\n\n// ─── Code block: merge split <pre> elements + escape logic ───\nfunction findParentPre(node) {\n while (node && node !== editor) {\n if (node.nodeType === 1 && node.tagName === 'PRE') { return node; }\n node = node.parentNode;\n }\n return null;\n}\n\nfunction exitCodeBlock(pre) {\n const sel = window.getSelection();\n const p = document.createElement('div');\n p.innerHTML = '<br>';\n if (pre.parentNode === editor) {\n pre.parentNode.insertBefore(p, pre.nextSibling);\n } else {\n const wrapper = pre.parentNode;\n wrapper.parentNode.insertBefore(p, wrapper.nextSibling);\n }\n const nr = document.createRange();\n nr.setStart(p, 0);\n nr.collapse(true);\n sel.removeAllRanges();\n sel.addRange(nr);\n}\n\n// Code block management: the browser splits <pre> on Enter, creating adjacent\n// <pre> elements. We let this happen and handle it via:\n// 1. CSS: adjacent pres look like one block (no gaps/borders between them)\n// 2. Serialization: htmlToMrkdwn treats adjacent pres as one code block\n// 3. Escape: when user creates an empty pre after another empty pre, exit code\n\n// Track code block escape (double-Enter on empty line)\neditor.addEventListener('input', () => {\n const pres = Array.from(editor.querySelectorAll('pre'));\n if (pres.length < 2) { return; }\n\n // Check for escape: last two adjacent pres are both empty\n for (let i = pres.length - 1; i > 0; i--) {\n const cur = pres[i];\n const prev = pres[i - 1];\n const curEmpty = !cur.textContent?.trim();\n const prevEmpty = !prev.textContent?.trim();\n\n if (curEmpty && prevEmpty) {\n // Double-Enter escape: remove both empty pres, place cursor after\n const lastRealPre = pres[i - 2] || null;\n // Remove the two empty pres and their wrappers\n [cur, prev].forEach(p => {\n const parent = p.parentNode;\n p.remove();\n if (parent && parent !== editor && parent.tagName === 'DIV' && !parent.textContent?.trim()) {\n parent.remove();\n }\n });\n if (lastRealPre) {\n exitCodeBlock(lastRealPre);\n } else {\n // No code left — just place cursor\n const sel = window.getSelection();\n if (sel) {\n const div = document.createElement('div');\n div.innerHTML = '<br>';\n editor.appendChild(div);\n const r = document.createRange();\n r.setStart(div, 0);\n r.collapse(true);\n sel.removeAllRanges();\n sel.addRange(r);\n }\n }\n return;\n }\n }\n});\n\n// ArrowDown at end of last code block → exit\neditor.addEventListener('keydown', (e) => {\n if (e.key === 'ArrowDown') {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) { return; }\n const pre = findParentPre(sel.anchorNode);\n if (pre && !pre.nextElementSibling) {\n e.preventDefault();\n exitCodeBlock(pre);\n }\n }\n}, true);\n\n// ─── Paste handler ───\neditor.addEventListener('paste', (e) => {\n const cd = e.clipboardData;\n if (!cd) { return; }\n const html = cd.getData('text/html');\n if (html) {\n e.preventDefault();\n const tmp = document.createElement('div');\n tmp.innerHTML = html;\n tmp.querySelectorAll('script,style,meta,link').forEach(el => el.remove());\n tmp.querySelectorAll('[style]').forEach(el => {\n const s = el.style;\n const keep = {};\n if (s.fontWeight === 'bold' || Number(s.fontWeight) >= 700) { keep.fontWeight = s.fontWeight; }\n if (s.fontStyle === 'italic') { keep.fontStyle = s.fontStyle; }\n if (s.textDecoration?.includes('line-through')) { keep.textDecoration = 'line-through'; }\n el.removeAttribute('style');\n Object.assign(el.style, keep);\n });\n document.execCommand('insertHTML', false, tmp.innerHTML);\n }\n});\n\n// ─── Link popover (Slack-style: select text, Cmd+K, two-field form) ───\nlet linkSavedRange = null;\nlet linkPopoverOpen = false;\nconst linkTextInput = document.getElementById('linkTextInput');\n\nfunction openLinkPopover() {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) { return; }\n\n linkSavedRange = sel.getRangeAt(0).cloneRange();\n const selectedText = sel.toString();\n\n // Position near selection\n const rect = linkSavedRange.getBoundingClientRect();\n const editorRect = editor.getBoundingClientRect();\n linkPopover.style.top = (rect.bottom + window.scrollY + 6) + 'px';\n linkPopover.style.left = Math.max(8, Math.min(rect.left + window.scrollX, editorRect.right - 360)) + 'px';\n\n // Pre-fill text field with selected text\n linkTextInput.value = selectedText;\n\n // If selection is already a link, pre-fill URL\n let existingUrl = '';\n const anchor = sel.anchorNode?.parentElement?.closest('a');\n if (anchor) {\n existingUrl = anchor.getAttribute('href') || '';\n linkTextInput.value = anchor.textContent || selectedText;\n }\n linkUrlInput.value = existingUrl;\n\n // Show popover (use rAF to avoid same-frame mousedown closing it)\n requestAnimationFrame(() => {\n linkPopover.classList.add('visible');\n linkPopoverOpen = true;\n linkUrlInput.focus();\n linkUrlInput.select();\n });\n}\n\nfunction closeLinkPopover() {\n linkPopover.classList.remove('visible');\n linkPopoverOpen = false;\n editor.focus();\n if (linkSavedRange) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(linkSavedRange);\n }\n}\n\nfunction applyLink() {\n const url = linkUrlInput.value.trim();\n const text = linkTextInput.value.trim();\n linkPopover.classList.remove('visible');\n linkPopoverOpen = false;\n\n if (!url || !linkSavedRange) { editor.focus(); return; }\n\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(linkSavedRange);\n\n // Check if we're updating an existing link\n const anchor = sel.anchorNode?.parentElement?.closest('a');\n if (anchor) {\n anchor.setAttribute('href', url);\n if (text) { anchor.textContent = text; }\n } else {\n // Create new link\n const a = document.createElement('a');\n a.href = url;\n a.target = '_blank';\n a.textContent = text || url;\n\n if (!linkSavedRange.collapsed) {\n linkSavedRange.deleteContents();\n }\n linkSavedRange.insertNode(a);\n\n const nr = document.createRange();\n nr.setStartAfter(a);\n nr.collapse(true);\n sel.removeAllRanges();\n sel.addRange(nr);\n }\n\n editor.focus();\n linkSavedRange = null;\n}\n\n// Popover key handling — both inputs\n[linkTextInput, linkUrlInput].forEach(input => {\n input.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') { e.preventDefault(); applyLink(); }\n if (e.key === 'Escape') { e.preventDefault(); closeLinkPopover(); }\n });\n});\n\n// Close popover on outside click (delayed check to avoid same-event close)\ndocument.addEventListener('mousedown', (e) => {\n if (linkPopoverOpen && !linkPopover.contains(e.target) && !e.target.closest('.toolbar-btn')) {\n closeLinkPopover();\n }\n});\n\n// ─── Toolbar toggle (Aa button) ───\nlet toolbarVisible = true;\nfunction toggleToolbar() {\n toolbarVisible = !toolbarVisible;\n document.getElementById('toolbar').style.display = toolbarVisible ? '' : 'none';\n document.getElementById('aaToggle').classList.toggle('active', toolbarVisible);\n}\n\n// ─── Send button state ───\nfunction updateSendBtn() {\n const text = sourceMode ? sourceEditor.value.trim() : (editor.textContent || '').trim();\n document.getElementById('sendBtn').disabled = !text;\n}\neditor.addEventListener('input', updateSendBtn);\n\n// ─── Source mode ───\nfunction toggleSourceMode() {\n sourceMode = !sourceMode;\n document.getElementById('sourceToggle').classList.toggle('active', sourceMode);\n if (sourceMode) {\n sourceEditor.value = htmlToMrkdwn(editor);\n editor.style.display = 'none';\n sourceEditor.style.display = 'block';\n document.getElementById('toolbar').style.display = 'none';\n document.getElementById('aaToggle').style.display = 'none';\n sourceEditor.focus();\n } else {\n editor.innerHTML = mrkdwnToHtml(sourceEditor.value);\n sourceEditor.style.display = 'none';\n editor.style.display = '';\n document.getElementById('toolbar').style.display = toolbarVisible ? '' : 'none';\n document.getElementById('aaToggle').style.display = '';\n editor.focus();\n }\n updateSendBtn();\n}\n\nsourceEditor.addEventListener('keydown', (e) => {\n if (e[MOD] && e.key === 'Enter') { e.preventDefault(); handleSend(); }\n});\nsourceEditor.addEventListener('input', updateSendBtn);\n\n// ─── Send / Cancel ───\nlet sending = false;\n\nasync function handleSend() {\n if (sending) { return; }\n const text = sourceMode ? sourceEditor.value.trim() : htmlToMrkdwn(editor);\n if (!text) { editor.focus(); return; }\n\n sending = true;\n const btn = document.getElementById('sendBtn');\n btn.disabled = true;\n btn.innerHTML = '\\\\u2026';\n\n try {\n const resp = await fetch('/send', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ text }),\n });\n const data = await resp.json();\n if (data.ok) {\n let sub = 'You can close this tab.';\n if (data.ts && CONFIG.workspaceUrl && CONFIG.channelId) {\n const tsNoDot = data.ts.replace('.', '');\n const baseUrl = CONFIG.workspaceUrl.replace(/\\\\/$/, '');\n const msgUrl = baseUrl + '/archives/' + CONFIG.channelId + '/p' + tsNoDot;\n sub = '<a href=\"' + msgUrl + '\" target=\"_blank\" style=\"color:var(--accent);text-decoration:none;\">View in Slack \\\\u2197</a><br><span style=\"opacity:0.6;font-size:12px;\">You can close this tab.</span>';\n }\n showOverlay('Message sent \\\\u2705', sub, 'success');\n } else {\n throw new Error(data.error || 'Send failed');\n }\n } catch (err) {\n showOverlay('Failed to send', err.message, 'error');\n sending = false;\n btn.disabled = false;\n btn.innerHTML = '<svg viewBox=\"0 0 20 20\" style=\"width:16px;height:16px;fill:currentColor\"><path d=\"M1.7 9.1l7.3 1 .01 0L1.7 9.1zm0 1.8l7.3-1-7.3 1zM1.5 2.1c-.2-.7.5-1.3 1.1-1L19 8.9c.6.3.6 1.2 0 1.5L2.6 18.9c-.7.3-1.3-.3-1.1-1l1.8-6.9L11 10 3.3 8.9 1.5 2.1z\"/></svg>';\n }\n}\n\nasync function handleCancel() {\n try { await fetch('/cancel', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: '{}' }); } catch (_) {}\n showOverlay('Draft cancelled', 'You can close this tab.', 'success');\n}\n\nfunction showOverlay(title, sub, type) {\n const overlay = document.getElementById('resultOverlay');\n const msg = document.getElementById('resultMsg');\n msg.className = 'overlay-msg ' + type;\n msg.innerHTML = title + '<small>' + sub + '</small>';\n overlay.classList.add('visible');\n}\n\n// ─── Focus ───\neditor.focus();\nupdateSendBtn();\n</script>\n</body>\n</html>`;\n",
43
- "import type { CliContext } from \"./context.ts\";\nimport { fetchMessage } from \"../slack/messages.ts\";\nimport { parseMsgTarget } from \"./targets.ts\";\nimport { resolveChannelId, resolveChannelName, normalizeChannelInput } from \"../slack/channels.ts\";\nimport { warnOnTruncatedSlackUrl } from \"./message-url-warning.ts\";\nimport { openDraftEditor } from \"./draft-server.ts\";\n\nexport async function draftMessage(input: {\n ctx: CliContext;\n targetInput: string;\n initialText?: string;\n options: { workspace?: string; threadTs?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n\n // URL target: resolve thread context and send\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n return input.ctx.withAutoRefresh({\n workspaceUrl: ref.workspace_url,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const msg = await fetchMessage(client, { ref });\n const threadTs = input.options.threadTs ?? msg.thread_ts ?? msg.ts;\n const channelName = await resolveChannelName(client, ref.channel_id);\n\n return draftWithEditor({\n channelName,\n channelId: ref.channel_id,\n workspaceUrl: ref.workspace_url,\n threadTs,\n initialText: input.initialText,\n sendFn: async (text: string) => {\n const resp = await client.api(\"chat.postMessage\", {\n channel: ref.channel_id,\n text,\n thread_ts: threadTs,\n });\n return { ts: resp.ts as string };\n },\n });\n },\n });\n }\n\n // Channel name/ID target\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [String(target.channel)],\n });\n\n return input.ctx.withAutoRefresh({\n workspaceUrl,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, String(target.channel));\n const normalized = normalizeChannelInput(target.channel);\n const channelName =\n normalized.kind === \"name\" ? normalized.value : await resolveChannelName(client, channelId);\n\n return draftWithEditor({\n channelName,\n channelId,\n workspaceUrl,\n threadTs: input.options.threadTs,\n initialText: input.initialText,\n sendFn: async (text: string) => {\n const resp = await client.api(\"chat.postMessage\", {\n channel: channelId,\n text,\n thread_ts: input.options.threadTs,\n });\n return { ts: resp.ts as string };\n },\n });\n },\n });\n}\n\nasync function draftWithEditor(input: {\n channelName: string;\n channelId: string;\n workspaceUrl?: string;\n threadTs?: string;\n initialText?: string;\n sendFn: (text: string) => Promise<{ ts: string }>;\n}): Promise<Record<string, unknown>> {\n // In CI mode, skip the editor and send directly\n if (process.env.CI) {\n if (!input.initialText) {\n throw new Error(\"In CI mode, initial text is required (no editor available)\");\n }\n const result = await input.sendFn(input.initialText);\n return { ok: true, sent: true, editor: \"skipped\", ts: result.ts };\n }\n\n const result = await openDraftEditor({\n channelName: input.channelName,\n channelId: input.channelId,\n workspaceUrl: input.workspaceUrl,\n threadTs: input.threadTs,\n initialText: input.initialText,\n onSend: input.sendFn,\n });\n\n if (\"cancelled\" in result) {\n return { ok: true, cancelled: true };\n }\n\n return { ok: true, sent: true };\n}\n",
43
+ "import type { CliContext } from \"./context.ts\";\nimport { fetchMessage } from \"../slack/messages.ts\";\nimport { parseMsgTarget } from \"./targets.ts\";\nimport { resolveChannelId, resolveChannelName, normalizeChannelInput } from \"../slack/channels.ts\";\nimport { warnOnTruncatedSlackUrl } from \"./message-url-warning.ts\";\nimport { openDraftEditor } from \"./draft-server.ts\";\n\nexport async function draftMessage(input: {\n ctx: CliContext;\n targetInput: string;\n initialText?: string;\n options: { workspace?: string; threadTs?: string };\n}): Promise<Record<string, unknown>> {\n const target = parseMsgTarget(String(input.targetInput));\n if (target.kind === \"user\") {\n throw new Error(\n \"message draft does not support user ID targets. Use a channel name, channel ID, or message URL.\",\n );\n }\n\n // URL target: resolve thread context and send\n if (target.kind === \"url\") {\n const { ref } = target;\n warnOnTruncatedSlackUrl(ref);\n return input.ctx.withAutoRefresh({\n workspaceUrl: ref.workspace_url,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(ref.workspace_url);\n const msg = await fetchMessage(client, { ref });\n const threadTs = input.options.threadTs ?? msg.thread_ts ?? msg.ts;\n const channelName = await resolveChannelName(client, ref.channel_id);\n\n return draftWithEditor({\n channelName,\n channelId: ref.channel_id,\n workspaceUrl: ref.workspace_url,\n threadTs,\n initialText: input.initialText,\n sendFn: async (text: string) => {\n const resp = await client.api(\"chat.postMessage\", {\n channel: ref.channel_id,\n text,\n thread_ts: threadTs,\n });\n return { ts: resp.ts as string };\n },\n });\n },\n });\n }\n\n // Channel name/ID target\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(input.options.workspace);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [String(target.channel)],\n });\n\n return input.ctx.withAutoRefresh({\n workspaceUrl,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, String(target.channel));\n const normalized = normalizeChannelInput(target.channel);\n const channelName =\n normalized.kind === \"name\" ? normalized.value : await resolveChannelName(client, channelId);\n\n return draftWithEditor({\n channelName,\n channelId,\n workspaceUrl,\n threadTs: input.options.threadTs,\n initialText: input.initialText,\n sendFn: async (text: string) => {\n const resp = await client.api(\"chat.postMessage\", {\n channel: channelId,\n text,\n thread_ts: input.options.threadTs,\n });\n return { ts: resp.ts as string };\n },\n });\n },\n });\n}\n\nasync function draftWithEditor(input: {\n channelName: string;\n channelId: string;\n workspaceUrl?: string;\n threadTs?: string;\n initialText?: string;\n sendFn: (text: string) => Promise<{ ts: string }>;\n}): Promise<Record<string, unknown>> {\n // In CI mode, skip the editor and send directly\n if (process.env.CI) {\n if (!input.initialText) {\n throw new Error(\"In CI mode, initial text is required (no editor available)\");\n }\n const result = await input.sendFn(input.initialText);\n return { ok: true, sent: true, editor: \"skipped\", ts: result.ts };\n }\n\n const result = await openDraftEditor({\n channelName: input.channelName,\n channelId: input.channelId,\n workspaceUrl: input.workspaceUrl,\n threadTs: input.threadTs,\n initialText: input.initialText,\n onSend: input.sendFn,\n });\n\n if (\"cancelled\" in result) {\n return { ok: true, cancelled: true };\n }\n\n return { ok: true, sent: true };\n}\n",
44
44
  "import type { Command } from \"commander\";\nimport type { CliContext } from \"./context.ts\";\nimport {\n deleteMessage,\n editMessage,\n handleMessageGet,\n handleMessageList,\n reactOnTarget,\n sendMessage,\n type MessageCommandOptions,\n} from \"./message-actions.ts\";\nimport { draftMessage } from \"./draft-actions.ts\";\n\nfunction collectOptionValue(value: string, previous: string[] = []): string[] {\n return [...previous, value];\n}\n\nexport function registerMessageCommand(input: { program: Command; ctx: CliContext }): void {\n const messageCmd = input.program\n .command(\"message\")\n .description(\"Read/write Slack messages (token-efficient JSON)\");\n\n messageCmd\n .command(\"get\", { isDefault: true })\n .description(\"Fetch a single Slack message (with thread summary if any)\")\n .argument(\"<target>\", \"Slack message URL, #channel, or channel ID\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--ts <ts>\", \"Message ts (required when using #channel/channel id)\")\n .option(\"--thread-ts <ts>\", \"Thread root ts hint (useful for thread permalinks)\")\n .option(\n \"--max-body-chars <n>\",\n \"Max content characters to include (default 8000, -1 for unlimited)\",\n \"8000\",\n )\n .option(\"--include-reactions\", \"Include reactions + reacting users\")\n .action(async (...args) => {\n const [targetInput, options] = args as [string, MessageCommandOptions];\n try {\n const payload = await handleMessageGet({ ctx: input.ctx, targetInput, options });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n messageCmd\n .command(\"list\")\n .description(\"List recent channel messages, or fetch a full thread\")\n .argument(\"<target>\", \"Slack message URL, #channel, or channel ID\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--thread-ts <ts>\", \"Thread root ts (lists thread replies instead of channel history)\")\n .option(\"--ts <ts>\", \"Message ts (resolve message to its thread)\")\n .option(\"--limit <n>\", \"Max messages to return for channel history (default 25, max 200)\")\n .option(\"--oldest <ts>\", \"Only messages after this ts (channel history mode)\")\n .option(\"--latest <ts>\", \"Only messages before this ts (channel history mode)\")\n .option(\n \"--with-reaction <emoji>\",\n \"Only include messages with this reaction (repeatable; channel history mode; requires --oldest)\",\n collectOptionValue,\n [],\n )\n .option(\n \"--without-reaction <emoji>\",\n \"Only include messages without this reaction (repeatable; channel history mode; requires --oldest)\",\n collectOptionValue,\n [],\n )\n .option(\n \"--max-body-chars <n>\",\n \"Max content characters to include (default 8000, -1 for unlimited)\",\n \"8000\",\n )\n .option(\"--include-reactions\", \"Include reactions + reacting users\")\n .action(async (...args) => {\n const [targetInput, options] = args as [string, MessageCommandOptions];\n try {\n const payload = await handleMessageList({ ctx: input.ctx, targetInput, options });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n messageCmd\n .command(\"edit\")\n .description(\"Edit a message\")\n .argument(\"<target>\", \"Slack message URL, #channel, or channel ID\")\n .argument(\"<text>\", \"New message text\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--ts <ts>\", \"Message ts (required when using #channel/channel id)\")\n .action(async (...args) => {\n const [targetInput, text, options] = args as [\n string,\n string,\n { workspace?: string; ts?: string },\n ];\n try {\n const payload = await editMessage({\n ctx: input.ctx,\n targetInput,\n text,\n options,\n });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n messageCmd\n .command(\"delete\")\n .description(\"Delete a message\")\n .argument(\"<target>\", \"Slack message URL, #channel, or channel ID\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--ts <ts>\", \"Message ts (required when using #channel/channel id)\")\n .action(async (...args) => {\n const [targetInput, options] = args as [string, { workspace?: string; ts?: string }];\n try {\n const payload = await deleteMessage({\n ctx: input.ctx,\n targetInput,\n options,\n });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n messageCmd\n .command(\"send\")\n .description(\"Send a message (optionally into a thread)\")\n .argument(\"<target>\", \"Slack message URL, #name/name, or channel id\")\n .argument(\"<text>\", \"Message text to post\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--thread-ts <ts>\", \"Thread root ts to post into (optional)\")\n .action(async (...args) => {\n const [targetInput, text, options] = args as [\n string,\n string,\n { workspace?: string; threadTs?: string },\n ];\n try {\n const payload = await sendMessage({\n ctx: input.ctx,\n targetInput,\n text,\n options,\n });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n messageCmd\n .command(\"draft\")\n .description(\"Open a rich Slack-like editor to compose and send a message\")\n .argument(\"<target>\", \"Slack message URL, #name/name, or channel id\")\n .argument(\"[text]\", \"Initial draft text (mrkdwn format)\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--thread-ts <ts>\", \"Thread root ts to post into (optional)\")\n .action(async (...args) => {\n const [targetInput, text, options] = args as [\n string,\n string | undefined,\n { workspace?: string; threadTs?: string },\n ];\n try {\n const payload = await draftMessage({\n ctx: input.ctx,\n targetInput,\n initialText: text,\n options,\n });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n const reactCmd = messageCmd.command(\"react\").description(\"Add or remove reactions\");\n\n reactCmd\n .command(\"add\")\n .description(\"Add a reaction to a message\")\n .argument(\"<target>\", \"Slack message URL, #channel, or channel ID\")\n .argument(\"<emoji>\", \"Emoji to react with (:rocket:, rocket, or 🚀)\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--ts <ts>\", \"Message ts (required when using #channel/channel id)\")\n .action(async (...args) => {\n const [targetInput, emoji, options] = args as [\n string,\n string,\n { workspace?: string; ts?: string },\n ];\n try {\n const payload = await reactOnTarget({\n ctx: input.ctx,\n action: \"add\",\n targetInput,\n emoji,\n options,\n });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n reactCmd\n .command(\"remove\")\n .description(\"Remove a reaction from a message\")\n .argument(\"<target>\", \"Slack message URL, #channel, or channel ID\")\n .argument(\"<emoji>\", \"Emoji to remove (:rocket:, rocket, or 🚀)\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; needed when using #channel/channel id across multiple workspaces)\",\n )\n .option(\"--ts <ts>\", \"Message ts (required when using #channel/channel id)\")\n .action(async (...args) => {\n const [targetInput, emoji, options] = args as [\n string,\n string,\n { workspace?: string; ts?: string },\n ];\n try {\n const payload = await reactOnTarget({\n ctx: input.ctx,\n action: \"remove\",\n targetInput,\n emoji,\n options,\n });\n console.log(JSON.stringify(payload, null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n}\n",
45
45
  "import type { SlackApiClient } from \"./client.ts\";\nimport { normalizeChannelInput } from \"./channels.ts\";\nimport { asArray, getString, isRecord } from \"../lib/object-type-guards.ts\";\n\nexport async function buildSlackSearchQuery(\n client: SlackApiClient,\n input: {\n query: string;\n channels?: string[];\n user?: string;\n after?: string;\n before?: string;\n },\n): Promise<string> {\n const parts: string[] = [];\n const base = input.query.trim();\n if (base) {\n parts.push(base);\n }\n\n if (input.after) {\n parts.push(`after:${validateDate(input.after)}`);\n }\n if (input.before) {\n parts.push(`before:${validateDate(input.before)}`);\n }\n\n if (input.user) {\n const token = await userTokenForSearch(client, input.user);\n if (token) {\n parts.push(token);\n }\n }\n\n if (input.channels && input.channels.length > 0) {\n for (const ch of input.channels) {\n const inToken = await channelTokenForSearch(client, ch);\n if (inToken) {\n parts.push(inToken);\n }\n }\n }\n\n return parts.join(\" \");\n}\n\nexport function validateDate(s: string): string {\n const v = s.trim();\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(v)) {\n throw new Error(`Invalid date: ${s} (expected YYYY-MM-DD)`);\n }\n return v;\n}\n\nexport function dateToUnixSeconds(date: string, edge: \"start\" | \"end\"): number {\n const d = validateDate(date);\n const iso = edge === \"start\" ? `${d}T00:00:00.000Z` : `${d}T23:59:59.999Z`;\n return Math.floor(Date.parse(iso) / 1000);\n}\n\nasync function userTokenForSearch(client: SlackApiClient, user: string): Promise<string | null> {\n const trimmed = user.trim();\n if (!trimmed) {\n return null;\n }\n\n // Accept @name or name\n if (trimmed.startsWith(\"@\")) {\n return `from:@${trimmed.slice(1)}`;\n }\n if (/^U[A-Z0-9]{8,}$/.test(trimmed)) {\n try {\n const info = await client.api(\"users.info\", { user: trimmed });\n const infoUser = isRecord(info) ? info.user : null;\n const name = isRecord(infoUser) ? (getString(infoUser.name) ?? \"\").trim() : \"\";\n return name ? `from:@${name}` : null;\n } catch {\n return null;\n }\n }\n return `from:@${trimmed}`;\n}\n\nasync function channelTokenForSearch(\n client: SlackApiClient,\n channel: string,\n): Promise<string | null> {\n const normalized = normalizeChannelInput(channel);\n if (normalized.kind === \"name\") {\n const name = normalized.value.trim();\n if (!name) {\n return null;\n }\n return `in:#${name}`;\n }\n\n // Channel id -> name for use in search query.\n try {\n const info = await client.api(\"conversations.info\", {\n channel: normalized.value,\n });\n const channelInfo = isRecord(info) ? info.channel : null;\n const name = isRecord(channelInfo) ? (getString(channelInfo.name) ?? \"\").trim() : \"\";\n if (name) {\n return `in:#${name}`;\n }\n } catch {\n // ignore\n }\n return null;\n}\n\nexport async function resolveUserId(\n client: SlackApiClient,\n input: string,\n): Promise<string | undefined> {\n const trimmed = input.trim();\n if (!trimmed) {\n return undefined;\n }\n if (/^U[A-Z0-9]{8,}$/.test(trimmed)) {\n return trimmed;\n }\n const name = trimmed.startsWith(\"@\") ? trimmed.slice(1) : trimmed;\n\n let cursor: string | undefined;\n for (;;) {\n const resp = await client.api(\"users.list\", { limit: 200, cursor });\n const members = isRecord(resp) ? asArray(resp.members).filter(isRecord) : [];\n const found = members.find((m) => {\n const mName = getString(m.name);\n const profile = isRecord(m.profile) ? m.profile : null;\n const display = profile ? getString(profile.display_name) : undefined;\n return mName === name || display === name;\n });\n const foundId = found ? getString(found.id) : undefined;\n if (foundId) {\n return foundId;\n }\n const meta = isRecord(resp) ? resp.response_metadata : null;\n const next = isRecord(meta) ? getString(meta.next_cursor) : undefined;\n if (!next) {\n break;\n }\n cursor = next;\n }\n return undefined;\n}\n",
46
46
  "import type { SlackApiClient } from \"./client.ts\";\nimport { asArray, isRecord } from \"../lib/object-type-guards.ts\";\n\nexport async function searchMessagesRaw(\n client: SlackApiClient,\n input: { query: string; limit: number },\n): Promise<Record<string, unknown>[]> {\n const pageSize = Math.min(Math.max(input.limit, 1), 100);\n const out: Record<string, unknown>[] = [];\n let page = 1;\n let pages = 1;\n\n for (;;) {\n const resp = await client.api(\"search.messages\", {\n query: input.query,\n count: pageSize,\n page,\n highlight: false,\n sort: \"timestamp\",\n sort_dir: \"desc\",\n });\n const messages = isRecord(resp) ? resp.messages : null;\n const matches = isRecord(messages) ? asArray(messages.matches).filter(isRecord) : [];\n out.push(...matches);\n\n const paging = isRecord(messages) ? (messages.paging ?? messages.pagination) : null;\n const totalPages = Number(isRecord(paging) ? (paging.pages ?? 1) : 1);\n if (Number.isFinite(totalPages) && totalPages > 0) {\n pages = totalPages;\n }\n\n if (out.length >= input.limit) {\n break;\n }\n if (matches.length === 0) {\n break;\n }\n if (page >= pages) {\n break;\n }\n page++;\n }\n\n return out.slice(0, input.limit);\n}\n\nexport async function searchFilesRaw(\n client: SlackApiClient,\n input: { query: string; limit: number },\n): Promise<Record<string, unknown>[]> {\n const pageSize = Math.min(Math.max(input.limit, 1), 100);\n const out: Record<string, unknown>[] = [];\n let page = 1;\n let pages = 1;\n\n for (;;) {\n const resp = await client.api(\"search.files\", {\n query: input.query,\n count: pageSize,\n page,\n highlight: false,\n sort: \"timestamp\",\n sort_dir: \"desc\",\n });\n const files = isRecord(resp) ? resp.files : null;\n const matches = isRecord(files) ? asArray(files.matches).filter(isRecord) : [];\n out.push(...matches);\n\n const paging = isRecord(files) ? (files.paging ?? files.pagination) : null;\n const totalPages = Number(isRecord(paging) ? (paging.pages ?? 1) : 1);\n if (Number.isFinite(totalPages) && totalPages > 0) {\n pages = totalPages;\n }\n\n if (out.length >= input.limit) {\n break;\n }\n if (matches.length === 0) {\n break;\n }\n if (page >= pages) {\n break;\n }\n page++;\n }\n\n return out.slice(0, input.limit);\n}\n",
@@ -56,7 +56,7 @@
56
56
  "import type { SlackApiClient } from \"./client.ts\";\nimport { asArray, getString, isRecord } from \"../lib/object-type-guards.ts\";\n\nexport async function createChannel(\n client: SlackApiClient,\n input: { name: string; isPrivate?: boolean },\n): Promise<{ channel: { id: string; name: string; is_private: boolean } }> {\n const name = input.name.trim();\n if (!name) {\n throw new Error(\"Channel name is empty\");\n }\n\n const resp = await client.api(\"conversations.create\", {\n name,\n is_private: Boolean(input.isPrivate),\n });\n const channel = isRecord(resp.channel) ? resp.channel : null;\n const id = channel ? getString(channel.id) : undefined;\n const channelName = channel ? getString(channel.name) : undefined;\n const isPrivate =\n channel && typeof channel.is_private === \"boolean\"\n ? channel.is_private\n : Boolean(input.isPrivate);\n\n if (!id || !channelName) {\n throw new Error(\"conversations.create returned no channel\");\n }\n\n return {\n channel: {\n id,\n name: channelName,\n is_private: isPrivate,\n },\n };\n}\n\nexport async function inviteUsersToChannel(\n client: SlackApiClient,\n input: { channelId: string; userIds: string[] },\n): Promise<{ invited_user_ids: string[]; already_in_channel_user_ids: string[] }> {\n const invitedUserIds: string[] = [];\n const alreadyInChannelUserIds: string[] = [];\n\n for (const userId of input.userIds) {\n try {\n await client.api(\"conversations.invite\", {\n channel: input.channelId,\n users: userId,\n });\n invitedUserIds.push(userId);\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.includes(\"already_in_channel\")) {\n alreadyInChannelUserIds.push(userId);\n continue;\n }\n throw err;\n }\n }\n\n return {\n invited_user_ids: invitedUserIds,\n already_in_channel_user_ids: alreadyInChannelUserIds,\n };\n}\n\nexport function parseInviteUsersCsv(input: string): string[] {\n return Array.from(\n new Set(\n asArray(input.split(\",\"))\n .map((value) => String(value).trim())\n .filter(Boolean),\n ),\n );\n}\n\nexport function splitEmailsFromInviteTargets(input: string[]): {\n emails: string[];\n non_email_targets: string[];\n} {\n const emails: string[] = [];\n const nonEmailTargets: string[] = [];\n for (const target of input) {\n if (isLikelyEmail(target)) {\n emails.push(target);\n continue;\n }\n nonEmailTargets.push(target);\n }\n return {\n emails: Array.from(new Set(emails)),\n non_email_targets: nonEmailTargets,\n };\n}\n\nexport async function inviteExternalUsersToChannel(\n client: SlackApiClient,\n input: { channelId: string; emails: string[]; externalLimited?: boolean },\n): Promise<{ invited_emails: string[]; already_invited_emails: string[] }> {\n const invitedEmails: string[] = [];\n const alreadyInvitedEmails: string[] = [];\n\n for (const email of input.emails) {\n try {\n await client.api(\"conversations.inviteShared\", {\n channel: input.channelId,\n emails: [email],\n external_limited: input.externalLimited ?? true,\n });\n invitedEmails.push(email);\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.includes(\"already_in_channel\") || message.includes(\"already_invited\")) {\n alreadyInvitedEmails.push(email);\n continue;\n }\n throw err;\n }\n }\n\n return {\n invited_emails: invitedEmails,\n already_invited_emails: alreadyInvitedEmails,\n };\n}\n\nfunction isLikelyEmail(input: string): boolean {\n return /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(input.trim());\n}\n",
57
57
  "import type { Command } from \"commander\";\nimport type { CliContext } from \"./context.ts\";\nimport { pruneEmpty } from \"../lib/compact-json.ts\";\nimport { resolveChannelId } from \"../slack/channels.ts\";\nimport {\n createChannel,\n inviteExternalUsersToChannel,\n inviteUsersToChannel,\n parseInviteUsersCsv,\n splitEmailsFromInviteTargets,\n} from \"../slack/channel-admin.ts\";\nimport { resolveUserId } from \"../slack/users.ts\";\n\nexport function registerChannelCommand(input: { program: Command; ctx: CliContext }): void {\n const channelCmd = input.program\n .command(\"channel\")\n .description(\"Create channels and invite users\");\n\n channelCmd\n .command(\"new\")\n .description(\"Create a new channel\")\n .requiredOption(\"--name <name>\", \"Channel name\")\n .option(\"--private\", \"Create as a private channel\")\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; required if you have multiple workspaces)\",\n )\n .action(async (...args) => {\n const [options] = args as [{ name: string; private?: boolean; workspace?: string }];\n try {\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(options.workspace);\n const payload = await input.ctx.withAutoRefresh({\n workspaceUrl,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n return await createChannel(client, {\n name: options.name,\n isPrivate: Boolean(options.private),\n });\n },\n });\n console.log(JSON.stringify(pruneEmpty(payload), null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n\n channelCmd\n .command(\"invite\")\n .description(\"Invite users to a channel\")\n .requiredOption(\"--channel <id-or-name>\", \"Channel id/name (#general, general, C...)\")\n .requiredOption(\"--users <users>\", \"Comma-separated users (U..., @handle, handle, email)\")\n .option(\"--external\", \"Send Slack Connect external invites (email targets only)\")\n .option(\n \"--allow-external-user-invites\",\n \"For --external invites, allow invitees to invite additional users\",\n )\n .option(\n \"--workspace <url>\",\n \"Workspace selector (full URL or unique substring; required if you have multiple workspaces)\",\n )\n .action(async (...args) => {\n const [options] = args as [\n {\n channel: string;\n users: string;\n external?: boolean;\n allowExternalUserInvites?: boolean;\n workspace?: string;\n },\n ];\n try {\n if (options.allowExternalUserInvites && !options.external) {\n throw new Error(\"--allow-external-user-invites requires --external\");\n }\n\n const workspaceUrl = input.ctx.effectiveWorkspaceUrl(options.workspace);\n await input.ctx.assertWorkspaceSpecifiedForChannelNames({\n workspaceUrl,\n channels: [options.channel],\n });\n\n const userInputs = parseInviteUsersCsv(options.users);\n if (userInputs.length === 0) {\n throw new Error('No users provided. Pass --users \"U01...,@alice,bob@example.com\"');\n }\n\n const payload = await input.ctx.withAutoRefresh({\n workspaceUrl,\n work: async () => {\n const { client } = await input.ctx.getClientForWorkspace(workspaceUrl);\n const channelId = await resolveChannelId(client, options.channel);\n\n if (options.external) {\n const split = splitEmailsFromInviteTargets(userInputs);\n if (split.emails.length === 0) {\n throw new Error(\n 'External invites require email targets in --users, e.g. --users \"alice@example.com,bob@example.com\"',\n );\n }\n const externalLimited = !options.allowExternalUserInvites;\n const inviteResult = await inviteExternalUsersToChannel(client, {\n channelId,\n emails: split.emails,\n externalLimited,\n });\n return {\n channel_id: channelId,\n external: true,\n external_limited: externalLimited,\n invited_emails: inviteResult.invited_emails,\n already_invited_emails: inviteResult.already_invited_emails,\n invalid_external_targets: split.non_email_targets,\n };\n }\n\n const resolvedUserIds: string[] = [];\n const unresolvedUsers: string[] = [];\n for (const userInput of userInputs) {\n const userId = await resolveUserId(client, userInput);\n if (!userId) {\n unresolvedUsers.push(userInput);\n continue;\n }\n resolvedUserIds.push(userId);\n }\n\n const inviteResult = await inviteUsersToChannel(client, {\n channelId,\n userIds: resolvedUserIds,\n });\n return {\n channel_id: channelId,\n invited_user_ids: inviteResult.invited_user_ids,\n already_in_channel_user_ids: inviteResult.already_in_channel_user_ids,\n unresolved_users: unresolvedUsers,\n };\n },\n });\n console.log(JSON.stringify(pruneEmpty(payload), null, 2));\n } catch (err: unknown) {\n console.error(input.ctx.errorMessage(err));\n process.exitCode = 1;\n }\n });\n}\n"
58
58
  ],
59
- "mappings": "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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
60
- "debugId": "5576104C616416B664756E2164756E21",
59
+ "mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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",
60
+ "debugId": "53507951D9C889F664756E2164756E21",
61
61
  "names": []
62
62
  }