@elizaos/plugin-google-meet-cute
Version:
Google Meet integration plugin for ElizaOS - manage meetings, get participant info, and access meeting artifacts via Google Meet REST API
137 lines (131 loc) • 4.5 kB
TypeScript
import { Service, IAgentRuntime, Plugin } from '@elizaos/core';
import { z } from 'zod';
import { OAuth2Client } from 'google-auth-library';
import { meet_v2 } from 'googleapis';
declare const googleMeetConfigSchema: z.ZodObject<{
GOOGLE_CLIENT_ID: z.ZodOptional<z.ZodString>;
GOOGLE_CLIENT_SECRET: z.ZodOptional<z.ZodString>;
GOOGLE_REDIRECT_URI: z.ZodDefault<z.ZodString>;
GOOGLE_REFRESH_TOKEN: z.ZodOptional<z.ZodString>;
GOOGLE_MEET_DEFAULT_DURATION_MINUTES: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>>;
GOOGLE_MEET_DEFAULT_ACCESS_TYPE: z.ZodDefault<z.ZodEnum<{
OPEN: "OPEN";
TRUSTED: "TRUSTED";
RESTRICTED: "RESTRICTED";
}>>;
}, z.core.$strip>;
type GoogleMeetConfig = z.infer<typeof googleMeetConfigSchema>;
interface Meeting {
id: string;
meetingCode: string;
meetingUri: string;
title?: string;
startTime: Date;
endTime?: Date;
participants: Participant[];
transcripts: Transcript[];
status: MeetingStatus;
}
interface Participant {
id: string;
name: string;
joinTime: Date;
leaveTime?: Date;
isActive: boolean;
}
interface Transcript {
id: string;
speakerName: string;
speakerId: string;
text: string;
timestamp: Date;
confidence: number;
startTime?: number;
endTime?: number;
}
declare enum MeetingStatus {
WAITING = "waiting",
ACTIVE = "active",
ENDED = "ended",
ERROR = "error"
}
interface MeetingReport {
meetingId: string;
title: string;
date: Date;
duration: number;
participants: string[];
summary: string;
keyPoints: string[];
actionItems: ActionItem[];
fullTranscript: Transcript[];
}
interface ActionItem {
description: string;
assignee?: string;
dueDate?: Date;
priority: "low" | "medium" | "high";
}
interface GoogleMeetAPIServiceState {
currentMeeting?: Meeting;
isAuthenticated: boolean;
hasRefreshToken: boolean;
}
interface CreateMeetingParams {
accessType?: 'OPEN' | 'TRUSTED' | 'RESTRICTED';
title?: string;
}
interface GetMeetingInfoParams {
meetingId?: string;
}
interface GenerateReportParams {
meetingId: string;
includeSummary?: boolean;
includeActionItems?: boolean;
includeTranscript?: boolean;
includeRecordings?: boolean;
}
interface AuthenticateParams {
interactive?: boolean;
}
declare class GoogleAuthService extends Service {
static serviceType: "google-auth";
private oauth2Client;
private authenticated;
get capabilityDescription(): string;
constructor(runtime: IAgentRuntime);
static start(runtime: IAgentRuntime): Promise<Service>;
initialize(): Promise<void>;
getAuthUrl(): string;
authenticateInteractive(): Promise<void>;
getAccessToken(): Promise<string>;
getOAuth2Client(): OAuth2Client;
isAuthenticated(): boolean;
stop(): Promise<void>;
}
declare class GoogleMeetAPIService extends Service {
static serviceType: "google-meet-api";
private authService;
private meetClient;
private meetings;
private currentMeetingSpace;
get capabilityDescription(): string;
constructor(runtime: IAgentRuntime);
static start(runtime: IAgentRuntime): Promise<Service>;
initialize(): Promise<void>;
createMeeting(config?: {
accessType?: 'OPEN' | 'TRUSTED' | 'RESTRICTED';
}): Promise<Meeting>;
getMeetingSpace(spaceName: string): Promise<meet_v2.Schema$Space>;
getConference(conferenceName: string): Promise<meet_v2.Schema$ConferenceRecord>;
listParticipants(conferenceRecordName: string): Promise<Participant[]>;
getTranscript(transcriptName: string): Promise<string>;
listRecordings(conferenceRecordName: string): Promise<meet_v2.Schema$Recording[]>;
getRecordingUrl(recordingName: string): Promise<string | null>;
endMeeting(spaceName: string): Promise<void>;
getCurrentMeeting(): Meeting | null;
getMeeting(meetingId: string): Meeting | null;
stop(): Promise<void>;
}
declare const googleMeetPlugin: Plugin;
export { type ActionItem, type AuthenticateParams, type CreateMeetingParams, type GenerateReportParams, type GetMeetingInfoParams, GoogleAuthService, GoogleMeetAPIService, type GoogleMeetAPIServiceState, type GoogleMeetConfig, type Meeting, type MeetingReport, MeetingStatus, type Participant, type Transcript, googleMeetPlugin as default, googleMeetConfigSchema, googleMeetPlugin };