@elizaos/plugin-bluesky 2.0.0-alpha.1
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/LICENSE +28 -0
- package/dist/browser/index.browser.js +70 -0
- package/dist/browser/index.browser.js.map +10 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.node.cjs +741 -0
- package/dist/cjs/index.node.js.map +18 -0
- package/dist/index.d.ts +2 -0
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.node.js +709 -0
- package/dist/node/index.node.js.map +18 -0
- package/package.json +180 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../index.ts", "../../services/bluesky.ts", "../../client.ts", "../../types/index.ts", "../../managers/agent.ts", "../../utils/config.ts", "../../services/message.ts", "../../generated/prompts/typescript/prompts.ts", "../../services/post.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { IAgentRuntime, Plugin, TestCase, TestSuite } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { BlueSkyService } from \"./services/bluesky\";\nimport { getApiKeyOptional } from \"./utils/config\";\n\nexport { BlueSkyClient } from \"./client\";\nexport { BlueSkyService } from \"./services/bluesky\";\n\nexport interface PluginConfig {\n readonly BLUESKY_HANDLE?: string;\n readonly BLUESKY_PASSWORD?: string;\n readonly BLUESKY_SERVICE?: string;\n readonly BLUESKY_DRY_RUN?: string;\n readonly BLUESKY_POLL_INTERVAL?: string;\n readonly BLUESKY_ENABLE_POSTING?: string;\n readonly BLUESKY_ENABLE_DMS?: string;\n readonly BLUESKY_POST_INTERVAL_MIN?: string;\n readonly BLUESKY_POST_INTERVAL_MAX?: string;\n readonly BLUESKY_ENABLE_ACTION_PROCESSING?: string;\n readonly BLUESKY_ACTION_INTERVAL?: string;\n readonly BLUESKY_POST_IMMEDIATELY?: string;\n readonly BLUESKY_MAX_ACTIONS_PROCESSING?: string;\n readonly BLUESKY_MAX_POST_LENGTH?: string;\n}\n\nconst pluginTests = [\n {\n name: \"bluesky_plugin_tests\",\n tests: [\n {\n name: \"bluesky_test_credentials_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const handle = getApiKeyOptional(runtime, \"BLUESKY_HANDLE\");\n const password = getApiKeyOptional(runtime, \"BLUESKY_PASSWORD\");\n if (!handle || !password) {\n throw new Error(\"BLUESKY_HANDLE and BLUESKY_PASSWORD are not configured\");\n }\n logger.log(\"BlueSky credentials are configured\");\n },\n },\n {\n name: \"bluesky_test_service_initialization\",\n fn: async (runtime: IAgentRuntime) => {\n const handle = getApiKeyOptional(runtime, \"BLUESKY_HANDLE\");\n const password = getApiKeyOptional(runtime, \"BLUESKY_PASSWORD\");\n if (!handle || !password) {\n logger.log(\"Skipping service initialization test - credentials not configured\");\n return;\n }\n\n const service = await BlueSkyService.start(runtime);\n if (!service) {\n throw new Error(\"Failed to initialize BlueSky service\");\n }\n logger.log(\"BlueSky service initialized successfully\");\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\nexport const blueSkyPlugin: Plugin = {\n name: \"bluesky\",\n description: \"BlueSky client plugin using AT Protocol for social interactions\",\n\n config: {\n BLUESKY_HANDLE: process.env.BLUESKY_HANDLE ?? null,\n BLUESKY_PASSWORD: process.env.BLUESKY_PASSWORD ?? null,\n BLUESKY_SERVICE: process.env.BLUESKY_SERVICE ?? null,\n BLUESKY_DRY_RUN: process.env.BLUESKY_DRY_RUN ?? null,\n BLUESKY_POLL_INTERVAL: process.env.BLUESKY_POLL_INTERVAL ?? null,\n BLUESKY_ENABLE_POSTING: process.env.BLUESKY_ENABLE_POSTING ?? null,\n BLUESKY_ENABLE_DMS: process.env.BLUESKY_ENABLE_DMS ?? null,\n BLUESKY_POST_INTERVAL_MIN: process.env.BLUESKY_POST_INTERVAL_MIN ?? null,\n BLUESKY_POST_INTERVAL_MAX: process.env.BLUESKY_POST_INTERVAL_MAX ?? null,\n BLUESKY_ENABLE_ACTION_PROCESSING: process.env.BLUESKY_ENABLE_ACTION_PROCESSING ?? null,\n BLUESKY_ACTION_INTERVAL: process.env.BLUESKY_ACTION_INTERVAL ?? null,\n BLUESKY_POST_IMMEDIATELY: process.env.BLUESKY_POST_IMMEDIATELY ?? null,\n BLUESKY_MAX_ACTIONS_PROCESSING: process.env.BLUESKY_MAX_ACTIONS_PROCESSING ?? null,\n BLUESKY_MAX_POST_LENGTH: process.env.BLUESKY_MAX_POST_LENGTH ?? null,\n },\n\n async init(_config, _runtime) {\n logger.log(\"BlueSky plugin initialized\");\n },\n\n services: [BlueSkyService],\n\n tests: pluginTests,\n};\n\nexport default blueSkyPlugin;\n",
|
|
6
|
+
"import { type IAgentRuntime, logger, Service, type UUID } from \"@elizaos/core\";\nimport { BlueSkyClient } from \"../client\";\nimport { BlueSkyAgentManager } from \"../managers/agent\";\nimport { BLUESKY_SERVICE_NAME } from \"../types\";\nimport { hasBlueSkyEnabled, validateBlueSkyConfig } from \"../utils/config\";\nimport { BlueSkyMessageService } from \"./message\";\nimport { BlueSkyPostService } from \"./post\";\n\nexport class BlueSkyService extends Service {\n private static instance: BlueSkyService;\n private managers = new Map<UUID, BlueSkyAgentManager>();\n private messageServices = new Map<UUID, BlueSkyMessageService>();\n private postServices = new Map<UUID, BlueSkyPostService>();\n static serviceType = BLUESKY_SERVICE_NAME;\n readonly capabilityDescription = \"Send and receive messages on BlueSky\";\n\n private static getInstance(): BlueSkyService {\n BlueSkyService.instance ??= new BlueSkyService();\n return BlueSkyService.instance;\n }\n\n static async start(runtime: IAgentRuntime): Promise<Service> {\n const service = BlueSkyService.getInstance();\n\n if (service.managers.has(runtime.agentId)) {\n return service;\n }\n\n if (!hasBlueSkyEnabled(runtime)) {\n return service;\n }\n\n const config = validateBlueSkyConfig(runtime);\n const client = new BlueSkyClient({\n service: config.service,\n handle: config.handle,\n password: config.password,\n dryRun: config.dryRun,\n });\n\n const manager = new BlueSkyAgentManager(runtime, config, client);\n service.managers.set(runtime.agentId, manager);\n service.messageServices.set(runtime.agentId, new BlueSkyMessageService(client, runtime));\n service.postServices.set(runtime.agentId, new BlueSkyPostService(client, runtime));\n\n await manager.start();\n logger.success({ agentId: runtime.agentId }, \"BlueSky client started\");\n\n return service;\n }\n\n static async stop(runtime: IAgentRuntime): Promise<void> {\n const service = BlueSkyService.getInstance();\n const manager = service.managers.get(runtime.agentId);\n if (!manager) return;\n\n await manager.stop();\n service.managers.delete(runtime.agentId);\n service.messageServices.delete(runtime.agentId);\n service.postServices.delete(runtime.agentId);\n logger.info({ agentId: runtime.agentId }, \"BlueSky client stopped\");\n }\n\n async stop(): Promise<void> {\n for (const manager of this.managers.values()) {\n await BlueSkyService.stop(manager.runtime);\n }\n }\n\n getMessageService(agentId: UUID): BlueSkyMessageService | undefined {\n return this.messageServices.get(agentId);\n }\n\n getPostService(agentId: UUID): BlueSkyPostService | undefined {\n return this.postServices.get(agentId);\n }\n}\n",
|
|
7
|
+
"import { type AppBskyFeedDefs, BskyAgent, RichText } from \"@atproto/api\";\nimport { logger } from \"@elizaos/core\";\nimport { LRUCache } from \"lru-cache\";\nimport type {\n ATProtocolPostRecord,\n ATProtocolProfileViewExtended,\n BlueSkyConversation,\n BlueSkyMessage,\n BlueSkyNotification,\n BlueSkyPost,\n BlueSkyProfile,\n BlueSkySession,\n CreatePostRequest,\n PostEmbed,\n PostFacet,\n SendMessageRequest,\n TimelineRequest,\n TimelineResponse,\n} from \"./types\";\nimport { BLUESKY_CHAT_SERVICE_DID, BlueSkyError, CACHE_SIZE, CACHE_TTL } from \"./types\";\n\nfunction isPostView(\n item:\n | AppBskyFeedDefs.PostView\n | AppBskyFeedDefs.NotFoundPost\n | AppBskyFeedDefs.BlockedPost\n | { $type: string; [k: string]: string | number | boolean | object | null | undefined }\n): item is AppBskyFeedDefs.PostView {\n return (\n typeof item === \"object\" &&\n item !== null &&\n \"uri\" in item &&\n \"cid\" in item &&\n \"author\" in item &&\n \"record\" in item &&\n \"indexedAt\" in item &&\n typeof (item as AppBskyFeedDefs.PostView).uri === \"string\" &&\n typeof (item as AppBskyFeedDefs.PostView).cid === \"string\"\n );\n}\n\nfunction adaptPostView(postView: AppBskyFeedDefs.PostView): BlueSkyPost {\n const author = postView.author as ATProtocolProfileViewExtended;\n const record = postView.record as ATProtocolPostRecord;\n\n return {\n uri: postView.uri,\n cid: postView.cid,\n author: {\n did: author.did,\n handle: author.handle,\n displayName: author.displayName,\n description: author.description,\n avatar: author.avatar,\n banner: author.banner,\n followersCount: author.followersCount,\n followsCount: author.followsCount,\n postsCount: author.postsCount,\n indexedAt: author.indexedAt,\n createdAt: author.createdAt,\n },\n record: {\n $type: record.$type ?? \"app.bsky.feed.post\",\n text: record.text ?? \"\",\n facets: record.facets as PostFacet[] | undefined,\n embed: record.embed as PostEmbed | undefined,\n createdAt: record.createdAt ?? \"\",\n },\n embed: postView.embed as PostEmbed | undefined,\n replyCount: postView.replyCount,\n repostCount: postView.repostCount,\n likeCount: postView.likeCount,\n quoteCount: postView.quoteCount,\n indexedAt: postView.indexedAt,\n };\n}\n\nexport interface BlueSkyClientConfig {\n service: string;\n handle: string;\n password: string;\n dryRun: boolean;\n}\n\nexport class BlueSkyClient {\n private readonly agent: BskyAgent;\n private session: BlueSkySession | null = null;\n private readonly profileCache: LRUCache<string, BlueSkyProfile>;\n\n constructor(private readonly config: BlueSkyClientConfig) {\n this.agent = new BskyAgent({ service: config.service });\n this.profileCache = new LRUCache({\n max: CACHE_SIZE.PROFILE,\n ttl: CACHE_TTL.PROFILE,\n });\n }\n\n async authenticate(): Promise<BlueSkySession> {\n const response = await this.agent.login({\n identifier: this.config.handle,\n password: this.config.password,\n });\n\n if (!response.success) {\n throw new BlueSkyError(\"Authentication failed\", \"AUTH_FAILED\");\n }\n\n this.session = {\n did: response.data.did,\n handle: response.data.handle,\n email: response.data.email,\n accessJwt: response.data.accessJwt,\n refreshJwt: response.data.refreshJwt,\n };\n\n logger.info(`Authenticated with BlueSky: ${this.session.handle}`);\n return this.session;\n }\n\n getSession(): BlueSkySession | null {\n return this.session;\n }\n\n async getProfile(handle: string): Promise<BlueSkyProfile> {\n const cached = this.profileCache.get(handle);\n if (cached) return cached;\n\n const response = await this.agent.getProfile({ actor: handle });\n const profile: BlueSkyProfile = {\n did: response.data.did,\n handle: response.data.handle,\n displayName: response.data.displayName,\n description: response.data.description,\n avatar: response.data.avatar,\n banner: response.data.banner,\n followersCount: response.data.followersCount,\n followsCount: response.data.followsCount,\n postsCount: response.data.postsCount,\n indexedAt: response.data.indexedAt,\n createdAt: response.data.createdAt,\n };\n\n this.profileCache.set(handle, profile);\n return profile;\n }\n\n async getTimeline(params: TimelineRequest = {}): Promise<TimelineResponse> {\n const response = await this.agent.getTimeline({\n algorithm: params.algorithm,\n limit: params.limit ?? 50,\n cursor: params.cursor,\n });\n\n return {\n cursor: response.data.cursor,\n feed: response.data.feed.map((item) => ({\n post: adaptPostView(item.post),\n reply:\n // @ts-expect-error - AT Proto SDK type narrowing issue with reply posts\n item.reply && isPostView(item.reply.root) && isPostView(item.reply.parent)\n ? {\n root: adaptPostView(item.reply.root as AppBskyFeedDefs.PostView),\n parent: adaptPostView(item.reply.parent as AppBskyFeedDefs.PostView),\n }\n : undefined,\n reason: item.reason as Record<\n string,\n string | number | boolean | object | null | undefined\n >,\n })),\n };\n }\n\n async sendPost(request: CreatePostRequest): Promise<BlueSkyPost> {\n if (this.config.dryRun) {\n logger.info(`Dry run: would create post with text: ${request.content.text}`);\n return this.mockPost(request.content.text);\n }\n\n const rt = new RichText({ text: request.content.text });\n await rt.detectFacets(this.agent);\n\n const record: Record<\n string,\n | string\n | PostFacet[]\n | PostEmbed\n | { root: { uri: string; cid: string }; parent: { uri: string; cid: string } }\n > = {\n $type: \"app.bsky.feed.post\",\n text: rt.text,\n facets: rt.facets as PostFacet[],\n createdAt: new Date().toISOString(),\n };\n\n if (request.replyTo) {\n record.reply = { root: request.replyTo, parent: request.replyTo };\n }\n\n if (request.content.embed) {\n record.embed = request.content.embed;\n }\n\n const response = await this.agent.post(record);\n const thread = await this.agent.getPostThread({\n uri: response.uri,\n depth: 0,\n });\n\n if (thread.data.thread.$type !== \"app.bsky.feed.defs#threadViewPost\") {\n throw new BlueSkyError(\"Failed to retrieve created post\", \"POST_CREATE_FAILED\");\n }\n\n const threadViewPost = thread.data.thread as AppBskyFeedDefs.ThreadViewPost;\n return adaptPostView(threadViewPost.post);\n }\n\n async deletePost(uri: string): Promise<void> {\n if (this.config.dryRun) {\n logger.info(`Dry run: would delete post: ${uri}`);\n return;\n }\n await this.agent.deletePost(uri);\n }\n\n async likePost(uri: string, cid: string): Promise<void> {\n if (this.config.dryRun) {\n logger.info(`Dry run: would like post: ${uri}`);\n return;\n }\n await this.agent.like(uri, cid);\n }\n\n async repost(uri: string, cid: string): Promise<void> {\n if (this.config.dryRun) {\n logger.info({ uri }, \"Dry run: would repost\");\n return;\n }\n await this.agent.repost(uri, cid);\n }\n\n async getNotifications(\n limit = 50,\n cursor?: string\n ): Promise<{\n notifications: BlueSkyNotification[];\n cursor?: string;\n }> {\n const response = await this.agent.listNotifications({ limit, cursor });\n return {\n notifications: response.data.notifications as BlueSkyNotification[],\n cursor: response.data.cursor,\n };\n }\n\n async updateSeenNotifications(): Promise<void> {\n await this.agent.updateSeenNotifications();\n }\n\n async getConversations(\n limit = 50,\n cursor?: string\n ): Promise<{\n conversations: BlueSkyConversation[];\n cursor?: string;\n }> {\n const response = await this.agent.api.chat.bsky.convo.listConvos(\n { limit, cursor },\n { headers: { \"atproto-proxy\": BLUESKY_CHAT_SERVICE_DID } }\n );\n return {\n conversations: response.data.convos as BlueSkyConversation[],\n cursor: response.data.cursor,\n };\n }\n\n async getMessages(\n convoId: string,\n limit = 50,\n cursor?: string\n ): Promise<{\n messages: BlueSkyMessage[];\n cursor?: string;\n }> {\n const response = await this.agent.api.chat.bsky.convo.getMessages(\n { convoId, limit, cursor },\n { headers: { \"atproto-proxy\": BLUESKY_CHAT_SERVICE_DID } }\n );\n return {\n messages: response.data.messages as BlueSkyMessage[],\n cursor: response.data.cursor,\n };\n }\n\n async sendMessage(request: SendMessageRequest): Promise<BlueSkyMessage> {\n if (this.config.dryRun) {\n logger.info({ convoId: request.convoId }, \"Dry run: would send message\");\n return this.mockMessage(request.message.text ?? \"\");\n }\n\n const response = await this.agent.api.chat.bsky.convo.sendMessage(\n {\n convoId: request.convoId,\n message: { text: request.message.text ?? \"\" },\n },\n { headers: { \"atproto-proxy\": BLUESKY_CHAT_SERVICE_DID } }\n );\n return response.data as BlueSkyMessage;\n }\n\n async cleanup(): Promise<void> {\n this.profileCache.clear();\n this.session = null;\n }\n\n private mockPost(text: string): BlueSkyPost {\n const now = new Date().toISOString();\n return {\n uri: `mock://post/${Date.now()}`,\n cid: `mock-cid-${Date.now()}`,\n author: {\n did: this.session?.did ?? \"did:plc:mock\",\n handle: this.session?.handle ?? \"mock.handle\",\n },\n record: { $type: \"app.bsky.feed.post\", text, createdAt: now },\n indexedAt: now,\n };\n }\n\n private mockMessage(text: string): BlueSkyMessage {\n return {\n id: `mock-msg-${Date.now()}`,\n rev: \"1\",\n text,\n sender: { did: this.session?.did ?? \"did:plc:mock\" },\n sentAt: new Date().toISOString(),\n };\n }\n}\n",
|
|
8
|
+
"import type { IAgentRuntime } from \"@elizaos/core\";\nimport { z } from \"zod\";\n\nexport const BLUESKY_SERVICE_URL = \"https://bsky.social\";\nexport const BLUESKY_MAX_POST_LENGTH = 300;\nexport const BLUESKY_POLL_INTERVAL = 60;\nexport const BLUESKY_POST_INTERVAL_MIN = 1800;\nexport const BLUESKY_POST_INTERVAL_MAX = 3600;\nexport const BLUESKY_ACTION_INTERVAL = 120;\nexport const BLUESKY_MAX_ACTIONS = 5;\nexport const BLUESKY_CHAT_SERVICE_DID = \"did:web:api.bsky.chat\";\nexport const BLUESKY_SERVICE_NAME = \"bluesky\";\n\nexport const AT_PROTOCOL_HANDLE_REGEX =\n /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/;\n\nexport const CACHE_TTL = {\n PROFILE: 3600000,\n TIMELINE: 300000,\n POST: 1800000,\n NOTIFICATIONS: 300000,\n CONVERSATIONS: 300000,\n} as const;\n\nexport const CACHE_SIZE = {\n PROFILE: 1000,\n TIMELINE: 500,\n POST: 10000,\n NOTIFICATIONS: 1000,\n CONVERSATIONS: 100,\n} as const;\n\nexport const BlueSkyConfigSchema = z.object({\n handle: z.string().regex(AT_PROTOCOL_HANDLE_REGEX, \"Invalid handle format\"),\n password: z.string().min(1),\n service: z.string().url().default(BLUESKY_SERVICE_URL),\n dryRun: z.boolean().default(false),\n pollInterval: z.number().positive().default(BLUESKY_POLL_INTERVAL),\n enablePost: z.boolean().default(true),\n postIntervalMin: z.number().positive().default(BLUESKY_POST_INTERVAL_MIN),\n postIntervalMax: z.number().positive().default(BLUESKY_POST_INTERVAL_MAX),\n enableActionProcessing: z.boolean().default(true),\n actionInterval: z.number().positive().default(BLUESKY_ACTION_INTERVAL),\n postImmediately: z.boolean().default(false),\n maxActionsProcessing: z.number().positive().default(BLUESKY_MAX_ACTIONS),\n enableDMs: z.boolean().default(true),\n});\n\nexport type BlueSkyConfig = z.infer<typeof BlueSkyConfigSchema>;\n\nexport interface BlueSkyProfile {\n did: string;\n handle: string;\n displayName?: string;\n description?: string;\n avatar?: string;\n banner?: string;\n followersCount?: number;\n followsCount?: number;\n postsCount?: number;\n indexedAt?: string;\n createdAt?: string;\n}\n\nexport interface PostFacet {\n index: { byteStart: number; byteEnd: number };\n features: Array<{\n $type?: string;\n [key: string]: string | number | boolean | object | null | undefined;\n }>;\n}\n\nexport interface PostEmbed {\n $type: string;\n [key: string]: string | number | boolean | object | null | undefined;\n}\n\nexport interface PostRecord {\n $type: string;\n text: string;\n facets?: PostFacet[];\n embed?: PostEmbed;\n createdAt: string;\n}\n\nexport interface BlueSkyPost {\n uri: string;\n cid: string;\n author: BlueSkyProfile;\n record: PostRecord;\n embed?: PostEmbed;\n replyCount?: number;\n repostCount?: number;\n likeCount?: number;\n quoteCount?: number;\n indexedAt: string;\n}\n\nexport interface TimelineRequest {\n algorithm?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface TimelineFeedItem {\n post: BlueSkyPost;\n reply?: {\n root: BlueSkyPost;\n parent: BlueSkyPost;\n };\n reason?: Record<string, string | number | boolean | object | null | undefined>;\n}\n\nexport interface TimelineResponse {\n cursor?: string;\n feed: TimelineFeedItem[];\n}\n\nexport interface CreatePostRequest {\n content: {\n text: string;\n facets?: PostFacet[];\n embed?: PostEmbed;\n };\n replyTo?: { uri: string; cid: string };\n}\n\nexport type NotificationReason = \"mention\" | \"reply\" | \"follow\" | \"like\" | \"repost\" | \"quote\";\n\nexport interface BlueSkyNotification {\n uri: string;\n cid: string;\n author: BlueSkyProfile;\n reason: NotificationReason;\n reasonSubject?: string;\n record: Record<string, string | number | boolean | object | null | undefined>;\n isRead: boolean;\n indexedAt: string;\n}\n\nexport interface BlueSkyMessage {\n id: string;\n rev: string;\n text?: string;\n embed?: PostEmbed;\n sender: { did: string };\n sentAt: string;\n}\n\nexport interface BlueSkyConversation {\n id: string;\n rev: string;\n members: Array<{\n did: string;\n handle?: string;\n displayName?: string;\n avatar?: string;\n }>;\n lastMessage?: BlueSkyMessage;\n unreadCount: number;\n muted: boolean;\n}\n\nexport interface SendMessageRequest {\n convoId: string;\n message: { text?: string; embed?: PostEmbed };\n}\n\nexport interface BlueSkySession {\n did: string;\n handle: string;\n email?: string;\n accessJwt: string;\n refreshJwt: string;\n}\n\nexport class BlueSkyError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly status?: number\n ) {\n super(message);\n this.name = \"BlueSkyError\";\n }\n}\n\nexport interface ATProtocolPostRecord {\n $type: string;\n text: string;\n facets?: PostFacet[];\n embed?: PostEmbed;\n createdAt: string;\n [k: string]: string | PostFacet[] | PostEmbed | number | boolean | null | undefined;\n}\n\nexport interface ATProtocolProfileViewExtended {\n did: string;\n handle: string;\n displayName?: string;\n description?: string;\n avatar?: string;\n banner?: string;\n followersCount?: number;\n followsCount?: number;\n postsCount?: number;\n indexedAt?: string;\n createdAt?: string;\n [k: string]: string | number | undefined;\n}\n\nexport interface BlueSkyEventPayload {\n runtime: IAgentRuntime;\n source: \"bluesky\";\n}\n\nexport interface BlueSkyNotificationEventPayload extends BlueSkyEventPayload {\n notification: BlueSkyNotification;\n}\n\nexport interface BlueSkyCreatePostEventPayload extends BlueSkyEventPayload {\n automated: boolean;\n}\n",
|
|
9
|
+
"import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport type { BlueSkyClient } from \"../client\";\nimport type {\n BlueSkyConfig,\n BlueSkyCreatePostEventPayload,\n BlueSkyNotification,\n BlueSkyNotificationEventPayload,\n NotificationReason,\n} from \"../types\";\nimport {\n getActionInterval,\n getMaxActionsProcessing,\n getPollInterval,\n getPostIntervalRange,\n isPostingEnabled,\n shouldPostImmediately,\n} from \"../utils/config\";\n\nexport class BlueSkyAgentManager {\n private pollTimer: ReturnType<typeof setInterval> | null = null;\n private actionTimer: ReturnType<typeof setInterval> | null = null;\n private postTimer: ReturnType<typeof setTimeout> | null = null;\n private running = false;\n private lastSeenAt: string | null = null;\n\n constructor(\n public readonly runtime: IAgentRuntime,\n public readonly config: BlueSkyConfig,\n public readonly client: BlueSkyClient\n ) {}\n\n async start(): Promise<void> {\n if (this.running) return;\n\n await this.client.authenticate();\n this.running = true;\n\n this.startNotificationPolling();\n\n if (this.config.enableActionProcessing) {\n this.startActionProcessing();\n }\n\n if (isPostingEnabled(this.runtime)) {\n this.startAutomatedPosting();\n }\n\n logger.success({ agentId: this.runtime.agentId }, \"BlueSky agent manager started\");\n }\n\n async stop(): Promise<void> {\n this.running = false;\n\n if (this.pollTimer) clearInterval(this.pollTimer);\n if (this.actionTimer) clearInterval(this.actionTimer);\n if (this.postTimer) clearTimeout(this.postTimer);\n\n this.pollTimer = null;\n this.actionTimer = null;\n this.postTimer = null;\n\n await this.client.cleanup();\n logger.info({ agentId: this.runtime.agentId }, \"BlueSky agent manager stopped\");\n }\n\n private startNotificationPolling(): void {\n const interval = getPollInterval(this.runtime);\n this.pollNotifications();\n this.pollTimer = setInterval(() => this.pollNotifications(), interval);\n }\n\n private async pollNotifications(): Promise<void> {\n if (!this.running) return;\n\n const { notifications } = await this.client.getNotifications(50);\n if (notifications.length === 0) return;\n\n const newNotifications = this.lastSeenAt\n ? notifications.filter((n) => {\n const lastSeen = this.lastSeenAt;\n return lastSeen !== null && n.indexedAt > lastSeen;\n })\n : notifications;\n\n if (newNotifications.length > 0) {\n this.lastSeenAt = notifications[0].indexedAt;\n\n for (const notification of newNotifications) {\n this.emitNotificationEvent(notification);\n }\n\n await this.client.updateSeenNotifications();\n }\n }\n\n private emitNotificationEvent(notification: BlueSkyNotification): void {\n const eventMap: Record<NotificationReason, string> = {\n mention: \"bluesky.mention_received\",\n reply: \"bluesky.mention_received\",\n follow: \"bluesky.follow_received\",\n like: \"bluesky.like_received\",\n repost: \"bluesky.repost_received\",\n quote: \"bluesky.quote_received\",\n };\n\n const event = eventMap[notification.reason];\n if (event) {\n const payload: BlueSkyNotificationEventPayload = {\n runtime: this.runtime,\n source: \"bluesky\",\n notification,\n };\n void this.runtime.emitEvent(event, payload);\n }\n }\n\n private startActionProcessing(): void {\n const interval = getActionInterval(this.runtime);\n this.processActions();\n this.actionTimer = setInterval(() => this.processActions(), interval);\n }\n\n private async processActions(): Promise<void> {\n if (!this.running) return;\n\n const max = getMaxActionsProcessing(this.runtime);\n const { notifications } = await this.client.getNotifications(max);\n\n for (const notification of notifications) {\n if (notification.reason === \"mention\" || notification.reason === \"reply\") {\n const payload: BlueSkyNotificationEventPayload = {\n runtime: this.runtime,\n source: \"bluesky\",\n notification,\n };\n void this.runtime.emitEvent(\"bluesky.should_respond\", payload);\n }\n }\n }\n\n private startAutomatedPosting(): void {\n if (shouldPostImmediately(this.runtime)) {\n this.createAutomatedPost();\n }\n this.scheduleNextPost();\n }\n\n private scheduleNextPost(): void {\n const { min, max } = getPostIntervalRange(this.runtime);\n const interval = Math.random() * (max - min) + min;\n\n this.postTimer = setTimeout(() => {\n if (this.running) {\n this.createAutomatedPost();\n this.scheduleNextPost();\n }\n }, interval);\n }\n\n private createAutomatedPost(): void {\n const payload: BlueSkyCreatePostEventPayload = {\n runtime: this.runtime,\n source: \"bluesky\",\n automated: true,\n };\n void this.runtime.emitEvent(\"bluesky.create_post\", payload);\n }\n}\n",
|
|
10
|
+
"import type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n BLUESKY_ACTION_INTERVAL,\n BLUESKY_MAX_ACTIONS,\n BLUESKY_POLL_INTERVAL,\n BLUESKY_POST_INTERVAL_MAX,\n BLUESKY_POST_INTERVAL_MIN,\n BLUESKY_SERVICE_URL,\n type BlueSkyConfig,\n BlueSkyConfigSchema,\n} from \"../types\";\n\nexport type { BlueSkyConfig };\n\nexport function getApiKeyOptional(runtime: IAgentRuntime, key: string): string | undefined {\n const value = runtime.getSetting(key);\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function hasBlueSkyEnabled(runtime: IAgentRuntime): boolean {\n const enabled = runtime.getSetting(\"BLUESKY_ENABLED\");\n if (enabled) return String(enabled).toLowerCase() === \"true\";\n return Boolean(runtime.getSetting(\"BLUESKY_HANDLE\") && runtime.getSetting(\"BLUESKY_PASSWORD\"));\n}\n\nexport function validateBlueSkyConfig(runtime: IAgentRuntime): BlueSkyConfig {\n const result = BlueSkyConfigSchema.safeParse({\n handle: String(runtime.getSetting(\"BLUESKY_HANDLE\") ?? \"\"),\n password: String(runtime.getSetting(\"BLUESKY_PASSWORD\") ?? \"\"),\n service: String(runtime.getSetting(\"BLUESKY_SERVICE\") ?? BLUESKY_SERVICE_URL),\n dryRun: runtime.getSetting(\"BLUESKY_DRY_RUN\") === \"true\",\n pollInterval:\n parseInt(String(runtime.getSetting(\"BLUESKY_POLL_INTERVAL\") ?? \"\"), 10) ||\n BLUESKY_POLL_INTERVAL,\n enablePost: runtime.getSetting(\"BLUESKY_ENABLE_POSTING\") !== \"false\",\n postIntervalMin:\n parseInt(String(runtime.getSetting(\"BLUESKY_POST_INTERVAL_MIN\") ?? \"\"), 10) ||\n BLUESKY_POST_INTERVAL_MIN,\n postIntervalMax:\n parseInt(String(runtime.getSetting(\"BLUESKY_POST_INTERVAL_MAX\") ?? \"\"), 10) ||\n BLUESKY_POST_INTERVAL_MAX,\n enableActionProcessing: runtime.getSetting(\"BLUESKY_ENABLE_ACTION_PROCESSING\") !== \"false\",\n actionInterval:\n parseInt(String(runtime.getSetting(\"BLUESKY_ACTION_INTERVAL\") ?? \"\"), 10) ||\n BLUESKY_ACTION_INTERVAL,\n postImmediately: runtime.getSetting(\"BLUESKY_POST_IMMEDIATELY\") === \"true\",\n maxActionsProcessing:\n parseInt(String(runtime.getSetting(\"BLUESKY_MAX_ACTIONS_PROCESSING\") ?? \"\"), 10) ||\n BLUESKY_MAX_ACTIONS,\n enableDMs: runtime.getSetting(\"BLUESKY_ENABLE_DMS\") !== \"false\",\n });\n\n if (!result.success) {\n const errors =\n (result.error as { errors?: { path: string[]; message: string }[] }).errors\n ?.map((e) => `${e.path.join(\".\")}: ${e.message}`)\n .join(\", \") || result.error.toString();\n throw new Error(`Invalid BlueSky configuration: ${errors}`);\n }\n\n return result.data;\n}\n\nexport function getPollInterval(runtime: IAgentRuntime): number {\n const seconds =\n parseInt(String(runtime.getSetting(\"BLUESKY_POLL_INTERVAL\") ?? \"\"), 10) ||\n BLUESKY_POLL_INTERVAL;\n return seconds * 1000;\n}\n\nexport function getActionInterval(runtime: IAgentRuntime): number {\n const seconds =\n parseInt(String(runtime.getSetting(\"BLUESKY_ACTION_INTERVAL\") ?? \"\"), 10) ||\n BLUESKY_ACTION_INTERVAL;\n return seconds * 1000;\n}\n\nexport function getMaxActionsProcessing(runtime: IAgentRuntime): number {\n return (\n parseInt(String(runtime.getSetting(\"BLUESKY_MAX_ACTIONS_PROCESSING\") ?? \"\"), 10) ||\n BLUESKY_MAX_ACTIONS\n );\n}\n\nexport function isPostingEnabled(runtime: IAgentRuntime): boolean {\n return runtime.getSetting(\"BLUESKY_ENABLE_POSTING\") !== \"false\";\n}\n\nexport function shouldPostImmediately(runtime: IAgentRuntime): boolean {\n return runtime.getSetting(\"BLUESKY_POST_IMMEDIATELY\") === \"true\";\n}\n\nexport function getPostIntervalRange(runtime: IAgentRuntime): {\n min: number;\n max: number;\n} {\n const min =\n parseInt(String(runtime.getSetting(\"BLUESKY_POST_INTERVAL_MIN\") ?? \"\"), 10) ||\n BLUESKY_POST_INTERVAL_MIN;\n const max =\n parseInt(String(runtime.getSetting(\"BLUESKY_POST_INTERVAL_MAX\") ?? \"\"), 10) ||\n BLUESKY_POST_INTERVAL_MAX;\n return { min: min * 1000, max: max * 1000 };\n}\n",
|
|
11
|
+
"import { composePrompt, type IAgentRuntime, ModelType } from \"@elizaos/core\";\nimport type { BlueSkyClient } from \"../client\";\nimport { generateDmTemplate } from \"../generated/prompts/typescript/prompts.js\";\nimport type { BlueSkyConversation, BlueSkyMessage } from \"../types\";\n\nexport class BlueSkyMessageService {\n static serviceType = \"IMessageService\";\n\n constructor(\n private readonly client: BlueSkyClient,\n private readonly runtime: IAgentRuntime\n ) {}\n\n async getMessages(convoId: string, limit = 50): Promise<BlueSkyMessage[]> {\n const response = await this.client.getMessages(convoId, limit);\n return response.messages;\n }\n\n async sendMessage(convoId: string, text: string): Promise<BlueSkyMessage> {\n const messageText = text.trim() || (await this.generateReply());\n return this.client.sendMessage({ convoId, message: { text: messageText } });\n }\n\n async getConversations(limit = 50): Promise<BlueSkyConversation[]> {\n const response = await this.client.getConversations(limit);\n return response.conversations;\n }\n\n private async generateReply(): Promise<string> {\n const prompt = composePrompt({\n state: {},\n template: generateDmTemplate,\n });\n const response = await this.runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n maxTokens: 50,\n });\n return response as string;\n }\n}\n",
|
|
12
|
+
"/**\n * Auto-generated prompt templates\n * DO NOT EDIT - Generated from ../../../../prompts/*.txt\n *\n * These prompts use Handlebars-style template syntax:\n * - {{variableName}} for simple substitution\n * - {{#each items}}...{{/each}} for iteration\n * - {{#if condition}}...{{/if}} for conditionals\n */\n\nexport const generateDmTemplate = `Generate a friendly direct message response under 200 characters.`;\n\nexport const GENERATE_DM_TEMPLATE = generateDmTemplate;\n\nexport const generatePostTemplate = `Generate an engaging BlueSky post under {{maxLength}} characters.`;\n\nexport const GENERATE_POST_TEMPLATE = generatePostTemplate;\n\nexport const truncatePostTemplate = `Shorten to under {{maxLength}} characters: \"{{text}}\"`;\n\nexport const TRUNCATE_POST_TEMPLATE = truncatePostTemplate;\n\n",
|
|
13
|
+
"import { composePrompt, type IAgentRuntime, ModelType } from \"@elizaos/core\";\nimport type { BlueSkyClient } from \"../client\";\nimport {\n generatePostTemplate,\n truncatePostTemplate,\n} from \"../generated/prompts/typescript/prompts.js\";\nimport type { BlueSkyPost, CreatePostRequest } from \"../types\";\nimport { BLUESKY_MAX_POST_LENGTH } from \"../types\";\n\nexport class BlueSkyPostService {\n static serviceType = \"IPostService\";\n\n constructor(\n private readonly client: BlueSkyClient,\n private readonly runtime: IAgentRuntime\n ) {}\n\n async getPosts(limit = 50, cursor?: string): Promise<BlueSkyPost[]> {\n const response = await this.client.getTimeline({ limit, cursor });\n return response.feed.map((item) => item.post);\n }\n\n async createPost(text: string, replyTo?: { uri: string; cid: string }): Promise<BlueSkyPost> {\n let postText = text.trim() || (await this.generateContent());\n\n if (postText.length > BLUESKY_MAX_POST_LENGTH) {\n postText = await this.truncate(postText);\n }\n\n const request: CreatePostRequest = {\n content: { text: postText },\n replyTo,\n };\n\n return this.client.sendPost(request);\n }\n\n async deletePost(uri: string): Promise<void> {\n await this.client.deletePost(uri);\n }\n\n private async generateContent(): Promise<string> {\n const prompt = composePrompt({\n state: {\n maxLength: String(BLUESKY_MAX_POST_LENGTH),\n },\n template: generatePostTemplate,\n });\n const response = await this.runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n maxTokens: 100,\n });\n return response as string;\n }\n\n private async truncate(text: string): Promise<string> {\n const prompt = composePrompt({\n state: {\n maxLength: String(BLUESKY_MAX_POST_LENGTH),\n text,\n },\n template: truncatePostTemplate,\n });\n const response = await this.runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n maxTokens: 100,\n });\n const truncated = response as string;\n return truncated.length > BLUESKY_MAX_POST_LENGTH\n ? `${truncated.substring(0, BLUESKY_MAX_POST_LENGTH - 3)}...`\n : truncated;\n }\n}\n"
|
|
14
|
+
],
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "8563B0C8EA46B71664756E2164756E21",
|
|
17
|
+
"names": []
|
|
18
|
+
}
|
package/dist/index.d.ts
ADDED