import type { WebClient } from '@slack/web-api'; import type { AgentConfig } from '../../shared/agent-config.js'; import type { AgentStatusSummary } from '../../shared/snapshot.js'; import { type ActivityRecorder } from '../activities/activity.service.js'; import { type ReminderService } from '../reminders/reminder.service.js'; import type { ShortcutModalView } from './shortcut-views.js'; export type { ShortcutModalView } from './shortcut-views.js'; export interface SlackShortcutUser { id: string; name?: string; team_id?: string; username?: string; } export interface SlackShortcutBody { callback_id?: string; channel?: { id?: string; name?: string; }; message?: { text?: string; thread_ts?: string; ts?: string; user?: string; }; response_url?: string; team?: { id?: string; } | null; trigger_id?: string; type?: string; user?: SlackShortcutUser; } export interface SlackShortcutView { private_metadata?: string; } interface ShortcutRuntimeService { getStatus(agentId: string): Promise; stopCurrentItem(agentId: string): Promise; } interface ShortcutAgentService { serviceFor(agentId: string): { getConfig(): Promise; }; } type ReminderServiceFactory = (agentId: string) => ReminderService; export interface SlackShortcutHandoffInput { channelId: string; channelName?: string; /** User who invoked the shortcut (body.user); fallback actor when source omits user. */ invokerUserId?: string; messageTs: string; receivedAt: string; /** Author of the source message when Slack provides message.user. */ sourceUserId?: string; teamId: string; text: string; threadTs: string; } export interface SlackShortcutHandoffResult { duplicate: boolean; itemId: string; queued: boolean; } export interface SlackShortcutHandoffService { handMessageToAgent(input: SlackShortcutHandoffInput): Promise; } interface SlackShortcutServiceDeps { activityRecorder?: ActivityRecorder; agentService?: ShortcutAgentService; handoffService?: SlackShortcutHandoffService; now?: () => Date; reminderServiceForAgent?: ReminderServiceFactory; runtimeService?: ShortcutRuntimeService; } export declare class SlackShortcutService { private readonly activityRecorder; private readonly agentService; private readonly handoffService?; private readonly now; private readonly reminderServiceForAgent; private readonly runtimeService; constructor(deps?: SlackShortcutServiceDeps); handleShortcut(input: { agentId: string; body: SlackShortcutBody; client: WebClient; }): Promise; confirmStop(input: { agentId: string; userId?: string; view: SlackShortcutView; }): Promise; /** Handles the "View all reminders" button — pushes a read-only reminder list. */ showRemindersView(input: { agentId: string; triggerId: string; client: WebClient; }): Promise; /** Handles a per-reminder "View →" button — pushes a single-reminder detail view. */ showReminderDetailView(input: { agentId: string; reminderId: string; triggerId: string; client: WebClient; }): Promise; private showHome; handMessageToAgent(input: { agentId: string; body: SlackShortcutBody; }): Promise; private openModal; private respondToMessageShortcut; private recordShortcutActivity; } export declare function userIdFromShortcutBody(body: unknown): string | undefined; //# sourceMappingURL=shortcut.service.d.ts.map