@framers/agentos-ext-channel-twitter 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/TwitterChannelAdapter.d.ts +50 -0
- package/dist/TwitterChannelAdapter.d.ts.map +1 -0
- package/dist/TwitterChannelAdapter.js +88 -0
- package/dist/TwitterChannelAdapter.js.map +1 -0
- package/dist/TwitterService.d.ts +77 -0
- package/dist/TwitterService.d.ts.map +1 -0
- package/dist/TwitterService.js +219 -0
- package/dist/TwitterService.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +174 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/analytics.d.ts +30 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +33 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/dm.d.ts +47 -0
- package/dist/tools/dm.d.ts.map +1 -0
- package/dist/tools/dm.js +45 -0
- package/dist/tools/dm.js.map +1 -0
- package/dist/tools/like.d.ts +35 -0
- package/dist/tools/like.d.ts.map +1 -0
- package/dist/tools/like.js +39 -0
- package/dist/tools/like.js.map +1 -0
- package/dist/tools/post.d.ts +48 -0
- package/dist/tools/post.d.ts.map +1 -0
- package/dist/tools/post.js +46 -0
- package/dist/tools/post.js.map +1 -0
- package/dist/tools/quote.d.ts +35 -0
- package/dist/tools/quote.d.ts.map +1 -0
- package/dist/tools/quote.js +34 -0
- package/dist/tools/quote.js.map +1 -0
- package/dist/tools/reply.d.ts +35 -0
- package/dist/tools/reply.d.ts.map +1 -0
- package/dist/tools/reply.js +34 -0
- package/dist/tools/reply.js.map +1 -0
- package/dist/tools/retweet.d.ts +35 -0
- package/dist/tools/retweet.d.ts.map +1 -0
- package/dist/tools/retweet.js +39 -0
- package/dist/tools/retweet.js.map +1 -0
- package/dist/tools/schedule.d.ts +41 -0
- package/dist/tools/schedule.d.ts.map +1 -0
- package/dist/tools/schedule.js +60 -0
- package/dist/tools/schedule.js.map +1 -0
- package/dist/tools/search.d.ts +41 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +35 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/thread.d.ts +34 -0
- package/dist/tools/thread.d.ts.map +1 -0
- package/dist/tools/thread.js +38 -0
- package/dist/tools/thread.js.map +1 -0
- package/dist/tools/timeline.d.ts +29 -0
- package/dist/tools/timeline.d.ts.map +1 -0
- package/dist/tools/timeline.js +32 -0
- package/dist/tools/timeline.js.map +1 -0
- package/dist/tools/trending.d.ts +30 -0
- package/dist/tools/trending.d.ts.map +1 -0
- package/dist/tools/trending.js +32 -0
- package/dist/tools/trending.js.map +1 -0
- package/manifest.json +39 -0
- package/package.json +35 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Twitter/X Channel Extension for AgentOS.
|
|
5
|
+
*
|
|
6
|
+
* Provides a full IChannelAdapter + 12 tools for autonomous Twitter interaction.
|
|
7
|
+
*
|
|
8
|
+
* @module @framers/agentos-ext-channel-twitter
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.TwitterThreadTool = exports.TwitterScheduleTool = exports.TwitterAnalyticsTool = exports.TwitterDmTool = exports.TwitterTimelineTool = exports.TwitterTrendingTool = exports.TwitterSearchTool = exports.TwitterRetweetTool = exports.TwitterLikeTool = exports.TwitterQuoteTool = exports.TwitterReplyTool = exports.TwitterPostTool = exports.TwitterChannelAdapter = exports.TwitterService = void 0;
|
|
45
|
+
exports.createExtensionPack = createExtensionPack;
|
|
46
|
+
const TwitterService_js_1 = require("./TwitterService.js");
|
|
47
|
+
const TwitterChannelAdapter_js_1 = require("./TwitterChannelAdapter.js");
|
|
48
|
+
const post_js_1 = require("./tools/post.js");
|
|
49
|
+
const reply_js_1 = require("./tools/reply.js");
|
|
50
|
+
const quote_js_1 = require("./tools/quote.js");
|
|
51
|
+
const like_js_1 = require("./tools/like.js");
|
|
52
|
+
const retweet_js_1 = require("./tools/retweet.js");
|
|
53
|
+
const search_js_1 = require("./tools/search.js");
|
|
54
|
+
const trending_js_1 = require("./tools/trending.js");
|
|
55
|
+
const timeline_js_1 = require("./tools/timeline.js");
|
|
56
|
+
const dm_js_1 = require("./tools/dm.js");
|
|
57
|
+
const analytics_js_1 = require("./tools/analytics.js");
|
|
58
|
+
const schedule_js_1 = require("./tools/schedule.js");
|
|
59
|
+
const thread_js_1 = require("./tools/thread.js");
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Secret Resolution
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
function resolveConfig(opts, secrets) {
|
|
64
|
+
return {
|
|
65
|
+
bearerToken: opts.bearerToken ?? secrets['twitter.bearerToken']
|
|
66
|
+
?? process.env.TWITTER_BEARER_TOKEN ?? process.env.X_BEARER_TOKEN,
|
|
67
|
+
apiKey: opts.apiKey ?? secrets['twitter.apiKey']
|
|
68
|
+
?? process.env.TWITTER_API_KEY ?? process.env.X_API_KEY
|
|
69
|
+
?? process.env.X_CONSUMER_KEY ?? process.env.TWITTER_CONSUMER_KEY,
|
|
70
|
+
apiSecret: opts.apiSecret ?? secrets['twitter.apiSecret']
|
|
71
|
+
?? process.env.TWITTER_API_SECRET ?? process.env.X_API_SECRET
|
|
72
|
+
?? process.env.X_CONSUMER_SECRET ?? process.env.X_CONSUMER_SECRET_KEY
|
|
73
|
+
?? process.env.TWITTER_CONSUMER_SECRET,
|
|
74
|
+
accessToken: opts.accessToken ?? secrets['twitter.accessToken']
|
|
75
|
+
?? process.env.TWITTER_ACCESS_TOKEN ?? process.env.X_ACCESS_TOKEN,
|
|
76
|
+
accessSecret: opts.accessSecret ?? secrets['twitter.accessSecret']
|
|
77
|
+
?? process.env.TWITTER_ACCESS_SECRET ?? process.env.X_ACCESS_SECRET
|
|
78
|
+
?? process.env.X_ACCESS_TOKEN_SECRET ?? process.env.TWITTER_ACCESS_TOKEN_SECRET,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Factory
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
function createExtensionPack(context) {
|
|
85
|
+
const opts = (context.options ?? {});
|
|
86
|
+
const secrets = opts.secrets ?? context.secrets ?? {};
|
|
87
|
+
const config = resolveConfig(opts, secrets);
|
|
88
|
+
const service = new TwitterService_js_1.TwitterService(config);
|
|
89
|
+
const adapter = new TwitterChannelAdapter_js_1.TwitterChannelAdapter(service);
|
|
90
|
+
const postTool = new post_js_1.TwitterPostTool(service);
|
|
91
|
+
const replyTool = new reply_js_1.TwitterReplyTool(service);
|
|
92
|
+
const quoteTool = new quote_js_1.TwitterQuoteTool(service);
|
|
93
|
+
const likeTool = new like_js_1.TwitterLikeTool(service);
|
|
94
|
+
const retweetTool = new retweet_js_1.TwitterRetweetTool(service);
|
|
95
|
+
const searchTool = new search_js_1.TwitterSearchTool(service);
|
|
96
|
+
const trendingTool = new trending_js_1.TwitterTrendingTool(service);
|
|
97
|
+
const timelineTool = new timeline_js_1.TwitterTimelineTool(service);
|
|
98
|
+
const dmTool = new dm_js_1.TwitterDmTool(service);
|
|
99
|
+
const analyticsTool = new analytics_js_1.TwitterAnalyticsTool(service);
|
|
100
|
+
const scheduleTool = new schedule_js_1.TwitterScheduleTool(service);
|
|
101
|
+
const threadTool = new thread_js_1.TwitterThreadTool(service);
|
|
102
|
+
return {
|
|
103
|
+
name: '@framers/agentos-ext-channel-twitter',
|
|
104
|
+
version: '0.1.0',
|
|
105
|
+
descriptors: [
|
|
106
|
+
{ id: 'twitterPost', kind: 'tool', priority: 50, payload: postTool },
|
|
107
|
+
{ id: 'twitterReply', kind: 'tool', priority: 50, payload: replyTool },
|
|
108
|
+
{ id: 'twitterQuote', kind: 'tool', priority: 50, payload: quoteTool },
|
|
109
|
+
{ id: 'twitterLike', kind: 'tool', priority: 50, payload: likeTool },
|
|
110
|
+
{ id: 'twitterRetweet', kind: 'tool', priority: 50, payload: retweetTool },
|
|
111
|
+
{ id: 'twitterSearch', kind: 'tool', priority: 50, payload: searchTool },
|
|
112
|
+
{ id: 'twitterTrending', kind: 'tool', priority: 50, payload: trendingTool },
|
|
113
|
+
{ id: 'twitterTimeline', kind: 'tool', priority: 50, payload: timelineTool },
|
|
114
|
+
{ id: 'twitterDm', kind: 'tool', priority: 50, payload: dmTool },
|
|
115
|
+
{ id: 'twitterAnalytics', kind: 'tool', priority: 50, payload: analyticsTool },
|
|
116
|
+
{ id: 'twitterSchedule', kind: 'tool', priority: 50, payload: scheduleTool },
|
|
117
|
+
{ id: 'twitterThread', kind: 'tool', priority: 50, payload: threadTool },
|
|
118
|
+
{ id: 'twitterChannel', kind: 'messaging-channel', priority: 50, payload: adapter },
|
|
119
|
+
],
|
|
120
|
+
onActivate: async () => {
|
|
121
|
+
// If no credentials from env/options, try OAuth 2.0 token store
|
|
122
|
+
if (!config.bearerToken && !config.apiKey) {
|
|
123
|
+
try {
|
|
124
|
+
const { FileTokenStore } = await Promise.resolve().then(() => __importStar(require('@framers/agentos/auth')));
|
|
125
|
+
const tokens = await new FileTokenStore().load('twitter');
|
|
126
|
+
if (tokens?.accessToken) {
|
|
127
|
+
config.bearerToken = tokens.accessToken;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch { /* FileTokenStore not available — ignore */ }
|
|
131
|
+
}
|
|
132
|
+
await service.initialize();
|
|
133
|
+
const credential = config.bearerToken || config.apiKey || '';
|
|
134
|
+
if (credential) {
|
|
135
|
+
await adapter.initialize({ platform: 'twitter', credential });
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
onDeactivate: async () => {
|
|
139
|
+
await adapter.shutdown();
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// Public exports
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
var TwitterService_js_2 = require("./TwitterService.js");
|
|
147
|
+
Object.defineProperty(exports, "TwitterService", { enumerable: true, get: function () { return TwitterService_js_2.TwitterService; } });
|
|
148
|
+
var TwitterChannelAdapter_js_2 = require("./TwitterChannelAdapter.js");
|
|
149
|
+
Object.defineProperty(exports, "TwitterChannelAdapter", { enumerable: true, get: function () { return TwitterChannelAdapter_js_2.TwitterChannelAdapter; } });
|
|
150
|
+
var post_js_2 = require("./tools/post.js");
|
|
151
|
+
Object.defineProperty(exports, "TwitterPostTool", { enumerable: true, get: function () { return post_js_2.TwitterPostTool; } });
|
|
152
|
+
var reply_js_2 = require("./tools/reply.js");
|
|
153
|
+
Object.defineProperty(exports, "TwitterReplyTool", { enumerable: true, get: function () { return reply_js_2.TwitterReplyTool; } });
|
|
154
|
+
var quote_js_2 = require("./tools/quote.js");
|
|
155
|
+
Object.defineProperty(exports, "TwitterQuoteTool", { enumerable: true, get: function () { return quote_js_2.TwitterQuoteTool; } });
|
|
156
|
+
var like_js_2 = require("./tools/like.js");
|
|
157
|
+
Object.defineProperty(exports, "TwitterLikeTool", { enumerable: true, get: function () { return like_js_2.TwitterLikeTool; } });
|
|
158
|
+
var retweet_js_2 = require("./tools/retweet.js");
|
|
159
|
+
Object.defineProperty(exports, "TwitterRetweetTool", { enumerable: true, get: function () { return retweet_js_2.TwitterRetweetTool; } });
|
|
160
|
+
var search_js_2 = require("./tools/search.js");
|
|
161
|
+
Object.defineProperty(exports, "TwitterSearchTool", { enumerable: true, get: function () { return search_js_2.TwitterSearchTool; } });
|
|
162
|
+
var trending_js_2 = require("./tools/trending.js");
|
|
163
|
+
Object.defineProperty(exports, "TwitterTrendingTool", { enumerable: true, get: function () { return trending_js_2.TwitterTrendingTool; } });
|
|
164
|
+
var timeline_js_2 = require("./tools/timeline.js");
|
|
165
|
+
Object.defineProperty(exports, "TwitterTimelineTool", { enumerable: true, get: function () { return timeline_js_2.TwitterTimelineTool; } });
|
|
166
|
+
var dm_js_2 = require("./tools/dm.js");
|
|
167
|
+
Object.defineProperty(exports, "TwitterDmTool", { enumerable: true, get: function () { return dm_js_2.TwitterDmTool; } });
|
|
168
|
+
var analytics_js_2 = require("./tools/analytics.js");
|
|
169
|
+
Object.defineProperty(exports, "TwitterAnalyticsTool", { enumerable: true, get: function () { return analytics_js_2.TwitterAnalyticsTool; } });
|
|
170
|
+
var schedule_js_2 = require("./tools/schedule.js");
|
|
171
|
+
Object.defineProperty(exports, "TwitterScheduleTool", { enumerable: true, get: function () { return schedule_js_2.TwitterScheduleTool; } });
|
|
172
|
+
var thread_js_2 = require("./tools/thread.js");
|
|
173
|
+
Object.defineProperty(exports, "TwitterThreadTool", { enumerable: true, get: function () { return thread_js_2.TwitterThreadTool; } });
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFH,kDA6DC;AA3ID,2DAAqD;AAErD,yEAAmE;AACnE,6CAAkD;AAClD,+CAAoD;AACpD,+CAAoD;AACpD,6CAAkD;AAClD,mDAAwD;AACxD,iDAAsD;AACtD,qDAA0D;AAC1D,qDAA0D;AAC1D,yCAA8C;AAC9C,uDAA4D;AAC5D,qDAA0D;AAC1D,iDAAsD;AAetD,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,IAA2B,EAAE,OAA+B;IACjF,OAAO;QACL,WAAW,EACT,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,qBAAqB,CAAC;eAC/C,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QACnE,MAAM,EACJ,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;eACrC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS;eACpD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB;QACnE,SAAS,EACP,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;eAC3C,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;eAC1D,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB;eAClE,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACxC,WAAW,EACT,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,qBAAqB,CAAC;eAC/C,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QACnE,YAAY,EACV,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;eACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;eAChE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B;KAClF,CAAC;AACJ,CAAC;AAmBD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAgB,mBAAmB,CAAC,OAAyB;IAC3D,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAA0B,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAI,kCAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,gDAAqB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,2BAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,2BAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,+BAAkB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,6BAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,iCAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,iCAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,qBAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,mCAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,iCAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,6BAAiB,CAAC,OAAO,CAAC,CAAC;IAElD,OAAO;QACL,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;YACX,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YACpE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YACtE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YACtE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YACpE,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;YAC1E,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YACxE,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAChE,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;YAC9E,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YACxE,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;SACpF;QACD,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,gEAAgE;YAChE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,uBAAuB,GAAC,CAAC;oBACjE,MAAM,MAAM,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1D,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;wBACxB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;oBAC1C,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,2CAA2C,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YAC7D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,YAAY,EAAE,KAAK,IAAI,EAAE;YACvB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AAEvB,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,2CAAkD;AAAzC,0GAAA,eAAe,OAAA;AACxB,6CAAoD;AAA3C,4GAAA,gBAAgB,OAAA;AACzB,6CAAoD;AAA3C,4GAAA,gBAAgB,OAAA;AACzB,2CAAkD;AAAzC,0GAAA,eAAe,OAAA;AACxB,iDAAwD;AAA/C,gHAAA,kBAAkB,OAAA;AAC3B,+CAAsD;AAA7C,8GAAA,iBAAiB,OAAA;AAC1B,mDAA0D;AAAjD,kHAAA,mBAAmB,OAAA;AAC5B,mDAA0D;AAAjD,kHAAA,mBAAmB,OAAA;AAC5B,uCAA8C;AAArC,sGAAA,aAAa,OAAA;AACtB,qDAA4D;AAAnD,oHAAA,oBAAoB,OAAA;AAC7B,mDAA0D;AAAjD,kHAAA,mBAAmB,OAAA;AAC5B,+CAAsD;AAA7C,8GAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { TwitterService } from '../TwitterService.js';
|
|
2
|
+
export declare class TwitterAnalyticsTool {
|
|
3
|
+
private service;
|
|
4
|
+
readonly id = "twitterAnalytics";
|
|
5
|
+
readonly name = "twitterAnalytics";
|
|
6
|
+
readonly displayName = "Engagement Analytics";
|
|
7
|
+
readonly description = "Get engagement metrics (likes, retweets, replies, impressions) for a specific tweet.";
|
|
8
|
+
readonly category = "social";
|
|
9
|
+
readonly version = "0.1.0";
|
|
10
|
+
readonly hasSideEffects = false;
|
|
11
|
+
readonly inputSchema: {
|
|
12
|
+
type: "object";
|
|
13
|
+
properties: {
|
|
14
|
+
tweetId: {
|
|
15
|
+
type: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
required: string[];
|
|
20
|
+
};
|
|
21
|
+
constructor(service: TwitterService);
|
|
22
|
+
execute(args: {
|
|
23
|
+
tweetId: string;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
success: boolean;
|
|
26
|
+
data?: any;
|
|
27
|
+
error?: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/tools/analytics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,oBAAoB;IAiBnB,OAAO,CAAC,OAAO;IAhB3B,QAAQ,CAAC,EAAE,sBAAsB;IACjC,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,WAAW,0BAA0B;IAC9C,QAAQ,CAAC,WAAW,0FAA0F;IAC9G,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;MAMlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,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;CAQpG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TwitterAnalyticsTool = void 0;
|
|
4
|
+
class TwitterAnalyticsTool {
|
|
5
|
+
constructor(service) {
|
|
6
|
+
this.service = service;
|
|
7
|
+
this.id = 'twitterAnalytics';
|
|
8
|
+
this.name = 'twitterAnalytics';
|
|
9
|
+
this.displayName = 'Engagement Analytics';
|
|
10
|
+
this.description = 'Get engagement metrics (likes, retweets, replies, impressions) for a specific tweet.';
|
|
11
|
+
this.category = 'social';
|
|
12
|
+
this.version = '0.1.0';
|
|
13
|
+
this.hasSideEffects = false;
|
|
14
|
+
this.inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
tweetId: { type: 'string', description: 'ID of the tweet to analyze' },
|
|
18
|
+
},
|
|
19
|
+
required: ['tweetId'],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async execute(args) {
|
|
23
|
+
try {
|
|
24
|
+
const metrics = await this.service.getTweetMetrics(args.tweetId);
|
|
25
|
+
return { success: true, data: metrics };
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
return { success: false, error: err.message };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.TwitterAnalyticsTool = TwitterAnalyticsTool;
|
|
33
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/tools/analytics.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IAiB/B,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAhBlC,OAAE,GAAG,kBAAkB,CAAC;QACxB,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,sBAAsB,CAAC;QACrC,gBAAW,GAAG,sFAAsF,CAAC;QACrG,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;aACvE;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAyB;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,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;AA3BD,oDA2BC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { TwitterService } from '../TwitterService.js';
|
|
2
|
+
export declare class TwitterDmTool {
|
|
3
|
+
private service;
|
|
4
|
+
readonly id = "twitterDm";
|
|
5
|
+
readonly name = "twitterDm";
|
|
6
|
+
readonly displayName = "Direct Messages";
|
|
7
|
+
readonly description = "Send or list direct messages on Twitter.";
|
|
8
|
+
readonly category = "social";
|
|
9
|
+
readonly version = "0.1.0";
|
|
10
|
+
readonly hasSideEffects = true;
|
|
11
|
+
readonly inputSchema: {
|
|
12
|
+
type: "object";
|
|
13
|
+
properties: {
|
|
14
|
+
action: {
|
|
15
|
+
type: string;
|
|
16
|
+
enum: string[];
|
|
17
|
+
description: string;
|
|
18
|
+
};
|
|
19
|
+
recipientId: {
|
|
20
|
+
type: string;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
text: {
|
|
24
|
+
type: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
maxResults: {
|
|
28
|
+
type: string;
|
|
29
|
+
description: string;
|
|
30
|
+
default: number;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
required: string[];
|
|
34
|
+
};
|
|
35
|
+
constructor(service: TwitterService);
|
|
36
|
+
execute(args: {
|
|
37
|
+
action: 'send' | 'list';
|
|
38
|
+
recipientId?: string;
|
|
39
|
+
text?: string;
|
|
40
|
+
maxResults?: number;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
success: boolean;
|
|
43
|
+
data?: any;
|
|
44
|
+
error?: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=dm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dm.d.ts","sourceRoot":"","sources":["../../src/tools/dm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,aAAa;IAoBZ,OAAO,CAAC,OAAO;IAnB3B,QAAQ,CAAC,EAAE,eAAe;IAC1B,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,8CAA8C;IAClE,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;MASlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,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;CAgBtK"}
|
package/dist/tools/dm.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TwitterDmTool = void 0;
|
|
4
|
+
class TwitterDmTool {
|
|
5
|
+
constructor(service) {
|
|
6
|
+
this.service = service;
|
|
7
|
+
this.id = 'twitterDm';
|
|
8
|
+
this.name = 'twitterDm';
|
|
9
|
+
this.displayName = 'Direct Messages';
|
|
10
|
+
this.description = 'Send or list direct messages on Twitter.';
|
|
11
|
+
this.category = 'social';
|
|
12
|
+
this.version = '0.1.0';
|
|
13
|
+
this.hasSideEffects = true;
|
|
14
|
+
this.inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
action: { type: 'string', enum: ['send', 'list'], description: 'Action to perform' },
|
|
18
|
+
recipientId: { type: 'string', description: 'User ID to send DM to (required for send)' },
|
|
19
|
+
text: { type: 'string', description: 'Message text (required for send)' },
|
|
20
|
+
maxResults: { type: 'number', description: 'Max DM events to return (for list)', default: 20 },
|
|
21
|
+
},
|
|
22
|
+
required: ['action'],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async execute(args) {
|
|
26
|
+
try {
|
|
27
|
+
if (args.action === 'send') {
|
|
28
|
+
if (!args.recipientId || !args.text) {
|
|
29
|
+
return { success: false, error: 'recipientId and text are required for send action' };
|
|
30
|
+
}
|
|
31
|
+
const result = await this.service.sendDm(args.recipientId, args.text);
|
|
32
|
+
return { success: true, data: result };
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const events = await this.service.getDmEvents(args.maxResults);
|
|
36
|
+
return { success: true, data: events };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
return { success: false, error: err.message };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.TwitterDmTool = TwitterDmTool;
|
|
45
|
+
//# sourceMappingURL=dm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dm.js","sourceRoot":"","sources":["../../src/tools/dm.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IAoBxB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAnBlC,OAAE,GAAG,WAAW,CAAC;QACjB,SAAI,GAAG,WAAW,CAAC;QACnB,gBAAW,GAAG,iBAAiB,CAAC;QAChC,gBAAW,GAAG,0CAA0C,CAAC;QACzD,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBACpF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;gBACzF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;gBACzE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE,OAAO,EAAE,EAAE,EAAE;aAC/F;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAA2F;QACvG,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC;gBACxF,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,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;AAtCD,sCAsCC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { TwitterService } from '../TwitterService.js';
|
|
2
|
+
export declare class TwitterLikeTool {
|
|
3
|
+
private service;
|
|
4
|
+
readonly id = "twitterLike";
|
|
5
|
+
readonly name = "twitterLike";
|
|
6
|
+
readonly displayName = "Like Tweet";
|
|
7
|
+
readonly description = "Like or unlike a tweet.";
|
|
8
|
+
readonly category = "social";
|
|
9
|
+
readonly version = "0.1.0";
|
|
10
|
+
readonly hasSideEffects = true;
|
|
11
|
+
readonly inputSchema: {
|
|
12
|
+
type: "object";
|
|
13
|
+
properties: {
|
|
14
|
+
tweetId: {
|
|
15
|
+
type: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
unlike: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
default: boolean;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
required: string[];
|
|
25
|
+
};
|
|
26
|
+
constructor(service: TwitterService);
|
|
27
|
+
execute(args: {
|
|
28
|
+
tweetId: string;
|
|
29
|
+
unlike?: boolean;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
success: boolean;
|
|
32
|
+
error?: string;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=like.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"like.d.ts","sourceRoot":"","sources":["../../src/tools/like.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,eAAe;IAkBd,OAAO,CAAC,OAAO;IAjB3B,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,gBAAgB;IACpC,QAAQ,CAAC,WAAW,6BAA6B;IACjD,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;MAOlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAY1G"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TwitterLikeTool = void 0;
|
|
4
|
+
class TwitterLikeTool {
|
|
5
|
+
constructor(service) {
|
|
6
|
+
this.service = service;
|
|
7
|
+
this.id = 'twitterLike';
|
|
8
|
+
this.name = 'twitterLike';
|
|
9
|
+
this.displayName = 'Like Tweet';
|
|
10
|
+
this.description = 'Like or unlike a tweet.';
|
|
11
|
+
this.category = 'social';
|
|
12
|
+
this.version = '0.1.0';
|
|
13
|
+
this.hasSideEffects = true;
|
|
14
|
+
this.inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
tweetId: { type: 'string', description: 'ID of the tweet' },
|
|
18
|
+
unlike: { type: 'boolean', description: 'Set to true to unlike', default: false },
|
|
19
|
+
},
|
|
20
|
+
required: ['tweetId'],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async execute(args) {
|
|
24
|
+
try {
|
|
25
|
+
if (args.unlike) {
|
|
26
|
+
await this.service.unlike(args.tweetId);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
await this.service.like(args.tweetId);
|
|
30
|
+
}
|
|
31
|
+
return { success: true };
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return { success: false, error: err.message };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.TwitterLikeTool = TwitterLikeTool;
|
|
39
|
+
//# sourceMappingURL=like.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"like.js","sourceRoot":"","sources":["../../src/tools/like.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAe;IAkB1B,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAjBlC,OAAE,GAAG,aAAa,CAAC;QACnB,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,YAAY,CAAC;QAC3B,gBAAW,GAAG,yBAAyB,CAAC;QACxC,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;gBAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAA2C;QACvD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,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;AAhCD,0CAgCC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { TwitterService } from '../TwitterService.js';
|
|
2
|
+
export declare class TwitterPostTool {
|
|
3
|
+
private service;
|
|
4
|
+
readonly id = "twitterPost";
|
|
5
|
+
readonly name = "twitterPost";
|
|
6
|
+
readonly displayName = "Post Tweet";
|
|
7
|
+
readonly description = "Post a tweet with text, optional media, and optional poll.";
|
|
8
|
+
readonly category = "social";
|
|
9
|
+
readonly version = "0.1.0";
|
|
10
|
+
readonly hasSideEffects = true;
|
|
11
|
+
readonly inputSchema: {
|
|
12
|
+
type: "object";
|
|
13
|
+
properties: {
|
|
14
|
+
text: {
|
|
15
|
+
type: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
mediaPath: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
pollOptions: {
|
|
23
|
+
type: string;
|
|
24
|
+
items: {
|
|
25
|
+
type: string;
|
|
26
|
+
};
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
pollDurationMinutes: {
|
|
30
|
+
type: string;
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
required: string[];
|
|
35
|
+
};
|
|
36
|
+
constructor(service: TwitterService);
|
|
37
|
+
execute(args: {
|
|
38
|
+
text: string;
|
|
39
|
+
mediaPath?: string;
|
|
40
|
+
pollOptions?: string[];
|
|
41
|
+
pollDurationMinutes?: number;
|
|
42
|
+
}): Promise<{
|
|
43
|
+
success: boolean;
|
|
44
|
+
data?: any;
|
|
45
|
+
error?: string;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=post.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../src/tools/post.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,eAAe;IAoBd,OAAO,CAAC,OAAO;IAnB3B,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,gBAAgB;IACpC,QAAQ,CAAC,WAAW,gEAAgE;IACpF,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;MASlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,mBAAmB,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;CAkB3K"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TwitterPostTool = void 0;
|
|
4
|
+
class TwitterPostTool {
|
|
5
|
+
constructor(service) {
|
|
6
|
+
this.service = service;
|
|
7
|
+
this.id = 'twitterPost';
|
|
8
|
+
this.name = 'twitterPost';
|
|
9
|
+
this.displayName = 'Post Tweet';
|
|
10
|
+
this.description = 'Post a tweet with text, optional media, and optional poll.';
|
|
11
|
+
this.category = 'social';
|
|
12
|
+
this.version = '0.1.0';
|
|
13
|
+
this.hasSideEffects = true;
|
|
14
|
+
this.inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
text: { type: 'string', description: 'Tweet text (max 280 characters)' },
|
|
18
|
+
mediaPath: { type: 'string', description: 'Path to media file to attach' },
|
|
19
|
+
pollOptions: { type: 'array', items: { type: 'string' }, description: 'Poll options (2-4 choices)' },
|
|
20
|
+
pollDurationMinutes: { type: 'number', description: 'Poll duration in minutes (default 1440 = 24h)' },
|
|
21
|
+
},
|
|
22
|
+
required: ['text'],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async execute(args) {
|
|
26
|
+
try {
|
|
27
|
+
const mediaIds = [];
|
|
28
|
+
if (args.mediaPath) {
|
|
29
|
+
const id = await this.service.uploadMedia(args.mediaPath);
|
|
30
|
+
mediaIds.push(id);
|
|
31
|
+
}
|
|
32
|
+
const result = await this.service.postTweet({
|
|
33
|
+
text: args.text,
|
|
34
|
+
mediaIds: mediaIds.length ? mediaIds : undefined,
|
|
35
|
+
pollOptions: args.pollOptions,
|
|
36
|
+
pollDurationMinutes: args.pollDurationMinutes,
|
|
37
|
+
});
|
|
38
|
+
return { success: true, data: result };
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
return { success: false, error: err.message };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.TwitterPostTool = TwitterPostTool;
|
|
46
|
+
//# sourceMappingURL=post.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/tools/post.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAe;IAoB1B,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAnBlC,OAAE,GAAG,aAAa,CAAC;QACnB,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,YAAY,CAAC;QAC3B,gBAAW,GAAG,4DAA4D,CAAC;QAC3E,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;gBACxE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBACpG,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;aACtG;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAgG;QAC5G,IAAI,CAAC;YACH,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC1C,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBAChD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,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;AAxCD,0CAwCC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { TwitterService } from '../TwitterService.js';
|
|
2
|
+
export declare class TwitterQuoteTool {
|
|
3
|
+
private service;
|
|
4
|
+
readonly id = "twitterQuote";
|
|
5
|
+
readonly name = "twitterQuote";
|
|
6
|
+
readonly displayName = "Quote Tweet";
|
|
7
|
+
readonly description = "Quote an existing tweet with your own comment.";
|
|
8
|
+
readonly category = "social";
|
|
9
|
+
readonly version = "0.1.0";
|
|
10
|
+
readonly hasSideEffects = true;
|
|
11
|
+
readonly inputSchema: {
|
|
12
|
+
type: "object";
|
|
13
|
+
properties: {
|
|
14
|
+
tweetId: {
|
|
15
|
+
type: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
text: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
required: string[];
|
|
24
|
+
};
|
|
25
|
+
constructor(service: TwitterService);
|
|
26
|
+
execute(args: {
|
|
27
|
+
tweetId: string;
|
|
28
|
+
text: string;
|
|
29
|
+
}): Promise<{
|
|
30
|
+
success: boolean;
|
|
31
|
+
data?: any;
|
|
32
|
+
error?: string;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=quote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../src/tools/quote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,gBAAgB;IAkBf,OAAO,CAAC,OAAO;IAjB3B,QAAQ,CAAC,EAAE,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,WAAW,oDAAoD;IACxE,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAOlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,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;CAQlH"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TwitterQuoteTool = void 0;
|
|
4
|
+
class TwitterQuoteTool {
|
|
5
|
+
constructor(service) {
|
|
6
|
+
this.service = service;
|
|
7
|
+
this.id = 'twitterQuote';
|
|
8
|
+
this.name = 'twitterQuote';
|
|
9
|
+
this.displayName = 'Quote Tweet';
|
|
10
|
+
this.description = 'Quote an existing tweet with your own comment.';
|
|
11
|
+
this.category = 'social';
|
|
12
|
+
this.version = '0.1.0';
|
|
13
|
+
this.hasSideEffects = true;
|
|
14
|
+
this.inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
tweetId: { type: 'string', description: 'ID of the tweet to quote' },
|
|
18
|
+
text: { type: 'string', description: 'Your quote comment' },
|
|
19
|
+
},
|
|
20
|
+
required: ['tweetId', 'text'],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async execute(args) {
|
|
24
|
+
try {
|
|
25
|
+
const result = await this.service.postTweet({ text: args.text, quoteTweetId: args.tweetId });
|
|
26
|
+
return { success: true, data: result };
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
return { success: false, error: err.message };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.TwitterQuoteTool = TwitterQuoteTool;
|
|
34
|
+
//# sourceMappingURL=quote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../../src/tools/quote.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBAAgB;IAkB3B,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAjBlC,OAAE,GAAG,cAAc,CAAC;QACpB,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,aAAa,CAAC;QAC5B,gBAAW,GAAG,gDAAgD,CAAC;QAC/D,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACpE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;aAC5D;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAC9B,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAuC;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,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;AA5BD,4CA4BC"}
|