@framers/agentos-ext-channel-bluesky 0.1.0
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 +98 -0
- package/dist/BlueskyChannelAdapter.d.ts +53 -0
- package/dist/BlueskyChannelAdapter.d.ts.map +1 -0
- package/dist/BlueskyChannelAdapter.js +92 -0
- package/dist/BlueskyChannelAdapter.js.map +1 -0
- package/dist/BlueskyService.d.ts +140 -0
- package/dist/BlueskyService.d.ts.map +1 -0
- package/dist/BlueskyService.js +291 -0
- package/dist/BlueskyService.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/analytics.d.ts +35 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +55 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/feed.d.ts +47 -0
- package/dist/tools/feed.d.ts.map +1 -0
- package/dist/tools/feed.js +53 -0
- package/dist/tools/feed.js.map +1 -0
- package/dist/tools/follow.d.ts +42 -0
- package/dist/tools/follow.d.ts.map +1 -0
- package/dist/tools/follow.js +51 -0
- package/dist/tools/follow.js.map +1 -0
- package/dist/tools/like.d.ts +47 -0
- package/dist/tools/like.d.ts.map +1 -0
- package/dist/tools/like.js +49 -0
- package/dist/tools/like.js.map +1 -0
- package/dist/tools/post.d.ts +51 -0
- package/dist/tools/post.d.ts.map +1 -0
- package/dist/tools/post.js +67 -0
- package/dist/tools/post.js.map +1 -0
- package/dist/tools/reply.d.ts +56 -0
- package/dist/tools/reply.d.ts.map +1 -0
- package/dist/tools/reply.js +47 -0
- package/dist/tools/reply.js.map +1 -0
- package/dist/tools/repost.d.ts +47 -0
- package/dist/tools/repost.d.ts.map +1 -0
- package/dist/tools/repost.js +49 -0
- package/dist/tools/repost.js.map +1 -0
- package/dist/tools/search.d.ts +48 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +51 -0
- package/dist/tools/search.js.map +1 -0
- package/manifest.json +35 -0
- package/package.json +35 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview BlueskySearchTool — search posts or people on Bluesky.
|
|
3
|
+
*
|
|
4
|
+
* Supports two search modes:
|
|
5
|
+
* - "posts" (default): Full-text search across Bluesky posts.
|
|
6
|
+
* - "people": Search for user profiles by name or handle.
|
|
7
|
+
*/
|
|
8
|
+
import type { BlueskyService } from '../BlueskyService.js';
|
|
9
|
+
export declare class BlueskySearchTool {
|
|
10
|
+
private service;
|
|
11
|
+
readonly id = "blueskySearch";
|
|
12
|
+
readonly name = "blueskySearch";
|
|
13
|
+
readonly displayName = "Search Bluesky";
|
|
14
|
+
readonly description = "Search Bluesky for posts or people matching a query.";
|
|
15
|
+
readonly category = "social";
|
|
16
|
+
readonly version = "0.1.0";
|
|
17
|
+
readonly hasSideEffects = false;
|
|
18
|
+
readonly inputSchema: {
|
|
19
|
+
type: "object";
|
|
20
|
+
properties: {
|
|
21
|
+
query: {
|
|
22
|
+
type: string;
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
type: {
|
|
26
|
+
type: string;
|
|
27
|
+
enum: string[];
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
limit: {
|
|
31
|
+
type: string;
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
required: string[];
|
|
36
|
+
};
|
|
37
|
+
constructor(service: BlueskyService);
|
|
38
|
+
execute(args: {
|
|
39
|
+
query: string;
|
|
40
|
+
type?: 'posts' | 'people';
|
|
41
|
+
limit?: number;
|
|
42
|
+
}): Promise<{
|
|
43
|
+
success: boolean;
|
|
44
|
+
data?: any;
|
|
45
|
+
error?: string;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,iBAAiB;IAmBhB,OAAO,CAAC,OAAO;IAlB3B,QAAQ,CAAC,EAAE,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,WAAW,oBAAoB;IACxC,QAAQ,CAAC,WAAW,0DAA0D;IAC9E,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;MAQlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAe7I"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview BlueskySearchTool — search posts or people on Bluesky.
|
|
5
|
+
*
|
|
6
|
+
* Supports two search modes:
|
|
7
|
+
* - "posts" (default): Full-text search across Bluesky posts.
|
|
8
|
+
* - "people": Search for user profiles by name or handle.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.BlueskySearchTool = void 0;
|
|
12
|
+
class BlueskySearchTool {
|
|
13
|
+
service;
|
|
14
|
+
id = 'blueskySearch';
|
|
15
|
+
name = 'blueskySearch';
|
|
16
|
+
displayName = 'Search Bluesky';
|
|
17
|
+
description = 'Search Bluesky for posts or people matching a query.';
|
|
18
|
+
category = 'social';
|
|
19
|
+
version = '0.1.0';
|
|
20
|
+
hasSideEffects = false;
|
|
21
|
+
inputSchema = {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
query: { type: 'string', description: 'Search query' },
|
|
25
|
+
type: { type: 'string', enum: ['posts', 'people'], description: 'Search type (default: "posts")' },
|
|
26
|
+
limit: { type: 'number', description: 'Max results to return (default 25, max 100)' },
|
|
27
|
+
},
|
|
28
|
+
required: ['query'],
|
|
29
|
+
};
|
|
30
|
+
constructor(service) {
|
|
31
|
+
this.service = service;
|
|
32
|
+
}
|
|
33
|
+
async execute(args) {
|
|
34
|
+
try {
|
|
35
|
+
const searchType = args.type ?? 'posts';
|
|
36
|
+
if (searchType === 'people') {
|
|
37
|
+
const actors = await this.service.searchActors(args.query, args.limit);
|
|
38
|
+
return { success: true, data: actors };
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const posts = await this.service.searchPosts(args.query, args.limit);
|
|
42
|
+
return { success: true, data: posts };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
return { success: false, error: err.message };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.BlueskySearchTool = BlueskySearchTool;
|
|
51
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;;;;;GAMG;;;AAIH,MAAa,iBAAiB;IAmBR;IAlBX,EAAE,GAAG,eAAe,CAAC;IACrB,IAAI,GAAG,eAAe,CAAC;IACvB,WAAW,GAAG,gBAAgB,CAAC;IAC/B,WAAW,GAAG,sDAAsD,CAAC;IACrE,QAAQ,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,KAAK,CAAC;IAEvB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;YACtD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE;YAClG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;SACtF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAkE;QAC9E,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;YAExC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AApCD,8CAoCC"}
|
package/manifest.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
|
|
3
|
+
"id": "com.framers.channels.bluesky",
|
|
4
|
+
"name": "Bluesky Channel Extension",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"description": "Bidirectional Bluesky integration — post, reply, like, repost, search, follow, and track engagement via the AT Protocol.",
|
|
7
|
+
"categories": ["channel", "social"],
|
|
8
|
+
"platforms": ["bluesky"],
|
|
9
|
+
"sdk": "@atproto/api",
|
|
10
|
+
"extensions": [
|
|
11
|
+
{ "kind": "tool", "id": "blueskyPost", "displayName": "Create Post" },
|
|
12
|
+
{ "kind": "tool", "id": "blueskyReply", "displayName": "Reply to Post" },
|
|
13
|
+
{ "kind": "tool", "id": "blueskyLike", "displayName": "Like Post" },
|
|
14
|
+
{ "kind": "tool", "id": "blueskyRepost", "displayName": "Repost" },
|
|
15
|
+
{ "kind": "tool", "id": "blueskySearch", "displayName": "Search Bluesky" },
|
|
16
|
+
{ "kind": "tool", "id": "blueskyFeed", "displayName": "Get Feed" },
|
|
17
|
+
{ "kind": "tool", "id": "blueskyFollow", "displayName": "Follow User" },
|
|
18
|
+
{ "kind": "tool", "id": "blueskyAnalytics", "displayName": "Post Analytics" },
|
|
19
|
+
{ "kind": "messaging-channel", "id": "blueskyChannel", "displayName": "Bluesky Channel Adapter" }
|
|
20
|
+
],
|
|
21
|
+
"requiredSecrets": ["bluesky.handle", "bluesky.appPassword"],
|
|
22
|
+
"optionalSecrets": ["bluesky.service"],
|
|
23
|
+
"features": [
|
|
24
|
+
"Post with text, images, and rich-text facets (mentions, links, hashtags)",
|
|
25
|
+
"Reply to posts with full thread context",
|
|
26
|
+
"Like and unlike posts",
|
|
27
|
+
"Repost and undo reposts",
|
|
28
|
+
"Search posts and people",
|
|
29
|
+
"Read timeline and author feeds",
|
|
30
|
+
"Follow and unfollow users",
|
|
31
|
+
"Track engagement analytics (likes, reposts, replies)",
|
|
32
|
+
"Quote posts",
|
|
33
|
+
"Delete posts"
|
|
34
|
+
]
|
|
35
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@framers/agentos-ext-channel-bluesky",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Bluesky channel adapter for AgentOS — post, reply, like, repost, search, follow, and engagement analytics via the AT Protocol.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"manifest.json"
|
|
10
|
+
],
|
|
11
|
+
"peerDependencies": {
|
|
12
|
+
"@framers/agentos": "^0.5.2"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@atproto/api": "^0.13.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@framers/agentos": "^0.6.6",
|
|
19
|
+
"@types/node": "^20.0.0",
|
|
20
|
+
"typescript": "^5.0.0",
|
|
21
|
+
"vitest": "^1.0.0"
|
|
22
|
+
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/framersai/agentos-extensions",
|
|
26
|
+
"directory": "registry/curated/channels/bluesky"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsc",
|
|
30
|
+
"dev": "tsc --watch",
|
|
31
|
+
"test": "vitest run",
|
|
32
|
+
"test:watch": "vitest watch",
|
|
33
|
+
"clean": "rm -rf dist"
|
|
34
|
+
}
|
|
35
|
+
}
|