@framers/agentos-ext-channel-tiktok 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/TikTokChannelAdapter.d.ts +30 -0
- package/dist/TikTokChannelAdapter.d.ts.map +1 -0
- package/dist/TikTokChannelAdapter.js +112 -0
- package/dist/TikTokChannelAdapter.js.map +1 -0
- package/dist/TikTokService.d.ts +107 -0
- package/dist/TikTokService.d.ts.map +1 -0
- package/dist/TikTokService.js +241 -0
- package/dist/TikTokService.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/analytics.d.ts +36 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +48 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/discover.d.ts +30 -0
- package/dist/tools/discover.d.ts.map +1 -0
- package/dist/tools/discover.js +37 -0
- package/dist/tools/discover.js.map +1 -0
- package/dist/tools/engage.d.ts +41 -0
- package/dist/tools/engage.d.ts.map +1 -0
- package/dist/tools/engage.js +53 -0
- package/dist/tools/engage.js.map +1 -0
- package/dist/tools/search.d.ts +46 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +53 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/trending.d.ts +36 -0
- package/dist/tools/trending.d.ts.map +1 -0
- package/dist/tools/trending.js +50 -0
- package/dist/tools/trending.js.map +1 -0
- package/dist/tools/upload.d.ts +69 -0
- package/dist/tools/upload.d.ts.map +1 -0
- package/dist/tools/upload.js +61 -0
- package/dist/tools/upload.js.map +1 -0
- package/manifest.json +30 -0
- package/package.json +38 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,aAAa,CA4C5E;AAED,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;AAC7H,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,eAAe,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview TikTok Channel Extension for AgentOS.
|
|
5
|
+
*
|
|
6
|
+
* Provides video publishing and content discovery via TikTok API for Business,
|
|
7
|
+
* plus ITool descriptors for video upload, trending, search, analytics,
|
|
8
|
+
* engagement, and discovery.
|
|
9
|
+
*
|
|
10
|
+
* @module @framers/agentos-ext-channel-tiktok
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.TikTokDiscoverTool = exports.TikTokEngageTool = exports.TikTokAnalyticsTool = exports.TikTokSearchTool = exports.TikTokTrendingTool = exports.TikTokUploadTool = exports.TikTokChannelAdapter = exports.TikTokService = void 0;
|
|
14
|
+
exports.createExtensionPack = createExtensionPack;
|
|
15
|
+
const TikTokService_1 = require("./TikTokService");
|
|
16
|
+
Object.defineProperty(exports, "TikTokService", { enumerable: true, get: function () { return TikTokService_1.TikTokService; } });
|
|
17
|
+
const TikTokChannelAdapter_1 = require("./TikTokChannelAdapter");
|
|
18
|
+
Object.defineProperty(exports, "TikTokChannelAdapter", { enumerable: true, get: function () { return TikTokChannelAdapter_1.TikTokChannelAdapter; } });
|
|
19
|
+
const upload_1 = require("./tools/upload");
|
|
20
|
+
Object.defineProperty(exports, "TikTokUploadTool", { enumerable: true, get: function () { return upload_1.TikTokUploadTool; } });
|
|
21
|
+
const trending_1 = require("./tools/trending");
|
|
22
|
+
Object.defineProperty(exports, "TikTokTrendingTool", { enumerable: true, get: function () { return trending_1.TikTokTrendingTool; } });
|
|
23
|
+
const search_1 = require("./tools/search");
|
|
24
|
+
Object.defineProperty(exports, "TikTokSearchTool", { enumerable: true, get: function () { return search_1.TikTokSearchTool; } });
|
|
25
|
+
const analytics_1 = require("./tools/analytics");
|
|
26
|
+
Object.defineProperty(exports, "TikTokAnalyticsTool", { enumerable: true, get: function () { return analytics_1.TikTokAnalyticsTool; } });
|
|
27
|
+
const engage_1 = require("./tools/engage");
|
|
28
|
+
Object.defineProperty(exports, "TikTokEngageTool", { enumerable: true, get: function () { return engage_1.TikTokEngageTool; } });
|
|
29
|
+
const discover_1 = require("./tools/discover");
|
|
30
|
+
Object.defineProperty(exports, "TikTokDiscoverTool", { enumerable: true, get: function () { return discover_1.TikTokDiscoverTool; } });
|
|
31
|
+
function resolveAccessToken(options, secrets) {
|
|
32
|
+
if (options.accessToken)
|
|
33
|
+
return options.accessToken;
|
|
34
|
+
// Check secrets map from registry
|
|
35
|
+
if (secrets?.['tiktok.accessToken'])
|
|
36
|
+
return secrets['tiktok.accessToken'];
|
|
37
|
+
// Environment variable fallback
|
|
38
|
+
const envName = options.accessTokenEnv ?? 'TIKTOK_ACCESS_TOKEN';
|
|
39
|
+
const envValue = process.env[envName];
|
|
40
|
+
if (envValue)
|
|
41
|
+
return envValue;
|
|
42
|
+
// Common variations
|
|
43
|
+
for (const v of ['TIKTOK_ACCESS_TOKEN', 'TIKTOK_TOKEN']) {
|
|
44
|
+
if (process.env[v])
|
|
45
|
+
return process.env[v];
|
|
46
|
+
}
|
|
47
|
+
throw new Error('TikTok access token not found. Provide via options.accessToken, secrets["tiktok.accessToken"], or TIKTOK_ACCESS_TOKEN env var.');
|
|
48
|
+
}
|
|
49
|
+
function createExtensionPack(context) {
|
|
50
|
+
const options = (context.options ?? {});
|
|
51
|
+
const accessToken = resolveAccessToken(options, options.secrets);
|
|
52
|
+
const config = {
|
|
53
|
+
accessToken,
|
|
54
|
+
username: options.username ?? options.secrets?.['tiktok.username'],
|
|
55
|
+
password: options.password ?? options.secrets?.['tiktok.password'],
|
|
56
|
+
};
|
|
57
|
+
const service = new TikTokService_1.TikTokService(config);
|
|
58
|
+
const adapter = new TikTokChannelAdapter_1.TikTokChannelAdapter(service);
|
|
59
|
+
const uploadTool = new upload_1.TikTokUploadTool(service);
|
|
60
|
+
const trendingTool = new trending_1.TikTokTrendingTool(service);
|
|
61
|
+
const searchTool = new search_1.TikTokSearchTool(service);
|
|
62
|
+
const analyticsTool = new analytics_1.TikTokAnalyticsTool(service);
|
|
63
|
+
const engageTool = new engage_1.TikTokEngageTool(service);
|
|
64
|
+
const discoverTool = new discover_1.TikTokDiscoverTool(service);
|
|
65
|
+
const priority = options.priority ?? 50;
|
|
66
|
+
return {
|
|
67
|
+
name: '@framers/agentos-ext-channel-tiktok',
|
|
68
|
+
version: '0.1.0',
|
|
69
|
+
descriptors: [
|
|
70
|
+
{ id: 'tiktokUpload', kind: 'tool', priority, payload: uploadTool },
|
|
71
|
+
{ id: 'tiktokTrending', kind: 'tool', priority, payload: trendingTool },
|
|
72
|
+
{ id: 'tiktokSearch', kind: 'tool', priority, payload: searchTool },
|
|
73
|
+
{ id: 'tiktokAnalytics', kind: 'tool', priority, payload: analyticsTool },
|
|
74
|
+
{ id: 'tiktokEngage', kind: 'tool', priority, payload: engageTool },
|
|
75
|
+
{ id: 'tiktokDiscover', kind: 'tool', priority, payload: discoverTool },
|
|
76
|
+
{ id: 'tiktokChannel', kind: 'messaging-channel', priority, payload: adapter },
|
|
77
|
+
],
|
|
78
|
+
onActivate: async () => {
|
|
79
|
+
await service.initialize();
|
|
80
|
+
await adapter.initialize({ platform: 'tiktok', credential: accessToken });
|
|
81
|
+
context.logger?.info('[TikTokChannel] Extension activated');
|
|
82
|
+
},
|
|
83
|
+
onDeactivate: async () => {
|
|
84
|
+
await adapter.shutdown();
|
|
85
|
+
await service.shutdown();
|
|
86
|
+
context.logger?.info('[TikTokChannel] Extension deactivated');
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
exports.default = createExtensionPack;
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ITool for TikTok video and creator analytics.
|
|
3
|
+
*/
|
|
4
|
+
import type { ITool, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
|
|
5
|
+
import type { TikTokService } from '../TikTokService';
|
|
6
|
+
export declare class TikTokAnalyticsTool implements ITool {
|
|
7
|
+
private readonly service;
|
|
8
|
+
readonly id = "tiktokAnalytics";
|
|
9
|
+
readonly name = "tiktokAnalytics";
|
|
10
|
+
readonly displayName = "Video Analytics";
|
|
11
|
+
readonly description = "Get performance metrics for a TikTok video or creator account (views, likes, comments, shares).";
|
|
12
|
+
readonly category = "social";
|
|
13
|
+
readonly version = "0.1.0";
|
|
14
|
+
readonly hasSideEffects = false;
|
|
15
|
+
readonly inputSchema: {
|
|
16
|
+
type: "object";
|
|
17
|
+
required: readonly ["type"];
|
|
18
|
+
properties: {
|
|
19
|
+
type: {
|
|
20
|
+
type: string;
|
|
21
|
+
enum: string[];
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
videoId: {
|
|
25
|
+
type: string;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
constructor(service: TikTokService);
|
|
31
|
+
execute(args: {
|
|
32
|
+
type: 'video' | 'creator';
|
|
33
|
+
videoId?: string;
|
|
34
|
+
}, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/tools/analytics.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,mBAAoB,YAAW,KAAK;IAsBnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IArBpC,SAAgB,EAAE,qBAAqB;IACvC,SAAgB,IAAI,qBAAqB;IACzC,SAAgB,WAAW,qBAAqB;IAChD,SAAgB,WAAW,qGAAqG;IAChI,SAAgB,QAAQ,YAAY;IACpC,SAAgB,OAAO,WAAW;IAClC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW;;;;;;;;;;;;;;MAWzB;gBAE2B,OAAO,EAAE,aAAa;IAE7C,OAAO,CACX,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EACrD,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAchC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview ITool for TikTok video and creator analytics.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TikTokAnalyticsTool = void 0;
|
|
8
|
+
class TikTokAnalyticsTool {
|
|
9
|
+
constructor(service) {
|
|
10
|
+
this.service = service;
|
|
11
|
+
this.id = 'tiktokAnalytics';
|
|
12
|
+
this.name = 'tiktokAnalytics';
|
|
13
|
+
this.displayName = 'Video Analytics';
|
|
14
|
+
this.description = 'Get performance metrics for a TikTok video or creator account (views, likes, comments, shares).';
|
|
15
|
+
this.category = 'social';
|
|
16
|
+
this.version = '0.1.0';
|
|
17
|
+
this.hasSideEffects = false;
|
|
18
|
+
this.inputSchema = {
|
|
19
|
+
type: 'object',
|
|
20
|
+
required: ['type'],
|
|
21
|
+
properties: {
|
|
22
|
+
type: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
enum: ['video', 'creator'],
|
|
25
|
+
description: 'Whether to get analytics for a specific video or the creator account',
|
|
26
|
+
},
|
|
27
|
+
videoId: { type: 'string', description: 'Video ID (required when type is "video")' },
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async execute(args, _context) {
|
|
32
|
+
try {
|
|
33
|
+
if (args.type === 'video') {
|
|
34
|
+
if (!args.videoId)
|
|
35
|
+
throw new Error('videoId is required when type is "video"');
|
|
36
|
+
const analytics = await this.service.getVideoAnalytics(args.videoId);
|
|
37
|
+
return { success: true, data: analytics };
|
|
38
|
+
}
|
|
39
|
+
const creatorStats = await this.service.getCreatorAnalytics();
|
|
40
|
+
return { success: true, data: { type: 'creator', metrics: creatorStats } };
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return { success: false, error: error.message };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.TikTokAnalyticsTool = TikTokAnalyticsTool;
|
|
48
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/tools/analytics.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;GAEG;;;AAKH,MAAa,mBAAmB;IAsB9B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;QArBnC,OAAE,GAAG,iBAAiB,CAAC;QACvB,SAAI,GAAG,iBAAiB,CAAC;QACzB,gBAAW,GAAG,iBAAiB,CAAC;QAChC,gBAAW,GAAG,iGAAiG,CAAC;QAChH,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YAC5B,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,CAAC,MAAM,CAAU;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;oBAC1B,WAAW,EAAE,sEAAsE;iBACpF;gBACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;aACrF;SACF,CAAC;IAEoD,CAAC;IAEvD,KAAK,CAAC,OAAO,CACX,IAAqD,EACrD,QAA8B;QAE9B,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC/E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AAzCD,kDAyCC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ITool for browsing TikTok For You page content.
|
|
3
|
+
*/
|
|
4
|
+
import type { ITool, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
|
|
5
|
+
import type { TikTokService } from '../TikTokService';
|
|
6
|
+
export declare class TikTokDiscoverTool implements ITool {
|
|
7
|
+
private readonly service;
|
|
8
|
+
readonly id = "tiktokDiscover";
|
|
9
|
+
readonly name = "tiktokDiscover";
|
|
10
|
+
readonly displayName = "Discover Content";
|
|
11
|
+
readonly description = "Browse recommended videos from the TikTok For You page.";
|
|
12
|
+
readonly category = "social";
|
|
13
|
+
readonly version = "0.1.0";
|
|
14
|
+
readonly hasSideEffects = false;
|
|
15
|
+
readonly inputSchema: {
|
|
16
|
+
type: "object";
|
|
17
|
+
required: readonly [];
|
|
18
|
+
properties: {
|
|
19
|
+
maxResults: {
|
|
20
|
+
type: string;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
constructor(service: TikTokService);
|
|
26
|
+
execute(args: {
|
|
27
|
+
maxResults?: number;
|
|
28
|
+
}, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,kBAAmB,YAAW,KAAK;IAiBlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBpC,SAAgB,EAAE,oBAAoB;IACtC,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,WAAW,sBAAsB;IACjD,SAAgB,WAAW,6DAA6D;IACxF,SAAgB,QAAQ,YAAY;IACpC,SAAgB,OAAO,WAAW;IAClC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW;;;;;;;;;MAMzB;gBAE2B,OAAO,EAAE,aAAa;IAE7C,OAAO,CACX,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAC7B,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAQhC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview ITool for browsing TikTok For You page content.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TikTokDiscoverTool = void 0;
|
|
8
|
+
class TikTokDiscoverTool {
|
|
9
|
+
constructor(service) {
|
|
10
|
+
this.service = service;
|
|
11
|
+
this.id = 'tiktokDiscover';
|
|
12
|
+
this.name = 'tiktokDiscover';
|
|
13
|
+
this.displayName = 'Discover Content';
|
|
14
|
+
this.description = 'Browse recommended videos from the TikTok For You page.';
|
|
15
|
+
this.category = 'social';
|
|
16
|
+
this.version = '0.1.0';
|
|
17
|
+
this.hasSideEffects = false;
|
|
18
|
+
this.inputSchema = {
|
|
19
|
+
type: 'object',
|
|
20
|
+
required: [],
|
|
21
|
+
properties: {
|
|
22
|
+
maxResults: { type: 'number', description: 'Max videos to retrieve (default: 20, max: 20)' },
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async execute(args, _context) {
|
|
27
|
+
try {
|
|
28
|
+
const videos = await this.service.getRecommendedVideos(args.maxResults);
|
|
29
|
+
return { success: true, data: { videos, count: videos.length } };
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return { success: false, error: error.message };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.TikTokDiscoverTool = TikTokDiscoverTool;
|
|
37
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;GAEG;;;AAKH,MAAa,kBAAkB;IAiB7B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;QAhBnC,OAAE,GAAG,gBAAgB,CAAC;QACtB,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GAAG,kBAAkB,CAAC;QACjC,gBAAW,GAAG,yDAAyD,CAAC;QACxE,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YAC5B,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,EAAW;YACrB,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;aAC7F;SACF,CAAC;IAEoD,CAAC;IAEvD,KAAK,CAAC,OAAO,CACX,IAA6B,EAC7B,QAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACnE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AA9BD,gDA8BC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ITool for engaging with TikTok content (like, comment, share).
|
|
3
|
+
*/
|
|
4
|
+
import type { ITool, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
|
|
5
|
+
import type { TikTokService } from '../TikTokService';
|
|
6
|
+
export declare class TikTokEngageTool implements ITool {
|
|
7
|
+
private readonly service;
|
|
8
|
+
readonly id = "tiktokEngage";
|
|
9
|
+
readonly name = "tiktokEngage";
|
|
10
|
+
readonly displayName = "Engage";
|
|
11
|
+
readonly description = "Like or comment on a TikTok video.";
|
|
12
|
+
readonly category = "social";
|
|
13
|
+
readonly version = "0.1.0";
|
|
14
|
+
readonly hasSideEffects = true;
|
|
15
|
+
readonly inputSchema: {
|
|
16
|
+
type: "object";
|
|
17
|
+
required: readonly ["action", "videoId"];
|
|
18
|
+
properties: {
|
|
19
|
+
action: {
|
|
20
|
+
type: string;
|
|
21
|
+
enum: string[];
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
videoId: {
|
|
25
|
+
type: string;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
text: {
|
|
29
|
+
type: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
constructor(service: TikTokService);
|
|
35
|
+
execute(args: {
|
|
36
|
+
action: 'like' | 'comment';
|
|
37
|
+
videoId: string;
|
|
38
|
+
text?: string;
|
|
39
|
+
}, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=engage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engage.d.ts","sourceRoot":"","sources":["../../src/tools/engage.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,gBAAiB,YAAW,KAAK;IAuBhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAtBpC,SAAgB,EAAE,kBAAkB;IACpC,SAAgB,IAAI,kBAAkB;IACtC,SAAgB,WAAW,YAAY;IACvC,SAAgB,WAAW,wCAAwC;IACnE,SAAgB,QAAQ,YAAY;IACpC,SAAgB,OAAO,WAAW;IAClC,SAAgB,cAAc,QAAQ;IAEtC,SAAgB,WAAW;;;;;;;;;;;;;;;;;;MAYzB;gBAE2B,OAAO,EAAE,aAAa;IAE7C,OAAO,CACX,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EACpE,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAiBhC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview ITool for engaging with TikTok content (like, comment, share).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TikTokEngageTool = void 0;
|
|
8
|
+
class TikTokEngageTool {
|
|
9
|
+
constructor(service) {
|
|
10
|
+
this.service = service;
|
|
11
|
+
this.id = 'tiktokEngage';
|
|
12
|
+
this.name = 'tiktokEngage';
|
|
13
|
+
this.displayName = 'Engage';
|
|
14
|
+
this.description = 'Like or comment on a TikTok video.';
|
|
15
|
+
this.category = 'social';
|
|
16
|
+
this.version = '0.1.0';
|
|
17
|
+
this.hasSideEffects = true;
|
|
18
|
+
this.inputSchema = {
|
|
19
|
+
type: 'object',
|
|
20
|
+
required: ['action', 'videoId'],
|
|
21
|
+
properties: {
|
|
22
|
+
action: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
enum: ['like', 'comment'],
|
|
25
|
+
description: 'Engagement action to perform',
|
|
26
|
+
},
|
|
27
|
+
videoId: { type: 'string', description: 'Video ID to engage with' },
|
|
28
|
+
text: { type: 'string', description: 'Comment text (required for comment action)' },
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async execute(args, _context) {
|
|
33
|
+
try {
|
|
34
|
+
switch (args.action) {
|
|
35
|
+
case 'like': {
|
|
36
|
+
await this.service.likeVideo(args.videoId);
|
|
37
|
+
return { success: true, data: { action: 'like', videoId: args.videoId } };
|
|
38
|
+
}
|
|
39
|
+
case 'comment': {
|
|
40
|
+
if (!args.text)
|
|
41
|
+
throw new Error('text is required for comment action');
|
|
42
|
+
const result = await this.service.commentOnVideo(args.videoId, args.text);
|
|
43
|
+
return { success: true, data: { action: 'comment', videoId: args.videoId, commentId: result.commentId } };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return { success: false, error: error.message };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.TikTokEngageTool = TikTokEngageTool;
|
|
53
|
+
//# sourceMappingURL=engage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engage.js","sourceRoot":"","sources":["../../src/tools/engage.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;GAEG;;;AAKH,MAAa,gBAAgB;IAuB3B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;QAtBnC,OAAE,GAAG,cAAc,CAAC;QACpB,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,QAAQ,CAAC;QACvB,gBAAW,GAAG,oCAAoC,CAAC;QACnD,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YAC5B,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAU;YACxC,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;oBACzB,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBACnE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;aACpF;SACF,CAAC;IAEoD,CAAC;IAEvD,KAAK,CAAC,OAAO,CACX,IAAoE,EACpE,QAA8B;QAE9B,IAAI,CAAC;YACH,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5E,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,IAAI,CAAC,IAAI,CAAC,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC5G,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AA7CD,4CA6CC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ITool for searching videos and creators on TikTok.
|
|
3
|
+
*/
|
|
4
|
+
import type { ITool, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
|
|
5
|
+
import type { TikTokService } from '../TikTokService';
|
|
6
|
+
export declare class TikTokSearchTool implements ITool {
|
|
7
|
+
private readonly service;
|
|
8
|
+
readonly id = "tiktokSearch";
|
|
9
|
+
readonly name = "tiktokSearch";
|
|
10
|
+
readonly displayName = "Search TikTok";
|
|
11
|
+
readonly description = "Search for videos or creators on TikTok by keyword.";
|
|
12
|
+
readonly category = "social";
|
|
13
|
+
readonly version = "0.1.0";
|
|
14
|
+
readonly hasSideEffects = false;
|
|
15
|
+
readonly inputSchema: {
|
|
16
|
+
type: "object";
|
|
17
|
+
required: readonly ["query"];
|
|
18
|
+
properties: {
|
|
19
|
+
query: {
|
|
20
|
+
type: string;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
type: {
|
|
24
|
+
type: string;
|
|
25
|
+
enum: string[];
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
maxResults: {
|
|
29
|
+
type: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
cursor: {
|
|
33
|
+
type: string;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
constructor(service: TikTokService);
|
|
39
|
+
execute(args: {
|
|
40
|
+
query: string;
|
|
41
|
+
type?: 'video' | 'user';
|
|
42
|
+
maxResults?: number;
|
|
43
|
+
cursor?: number;
|
|
44
|
+
}, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,gBAAiB,YAAW,KAAK;IAwBhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAvBpC,SAAgB,EAAE,kBAAkB;IACpC,SAAgB,IAAI,kBAAkB;IACtC,SAAgB,WAAW,mBAAmB;IAC9C,SAAgB,WAAW,yDAAyD;IACpF,SAAgB,QAAQ,YAAY;IACpC,SAAgB,OAAO,WAAW;IAClC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;MAazB;gBAE2B,OAAO,EAAE,aAAa;IAE7C,OAAO,CACX,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EACtF,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAmBhC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview ITool for searching videos and creators on TikTok.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TikTokSearchTool = void 0;
|
|
8
|
+
class TikTokSearchTool {
|
|
9
|
+
constructor(service) {
|
|
10
|
+
this.service = service;
|
|
11
|
+
this.id = 'tiktokSearch';
|
|
12
|
+
this.name = 'tiktokSearch';
|
|
13
|
+
this.displayName = 'Search TikTok';
|
|
14
|
+
this.description = 'Search for videos or creators on TikTok by keyword.';
|
|
15
|
+
this.category = 'social';
|
|
16
|
+
this.version = '0.1.0';
|
|
17
|
+
this.hasSideEffects = false;
|
|
18
|
+
this.inputSchema = {
|
|
19
|
+
type: 'object',
|
|
20
|
+
required: ['query'],
|
|
21
|
+
properties: {
|
|
22
|
+
query: { type: 'string', description: 'Search query' },
|
|
23
|
+
type: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
enum: ['video', 'user'],
|
|
26
|
+
description: 'Search type: video or user (default: video)',
|
|
27
|
+
},
|
|
28
|
+
maxResults: { type: 'number', description: 'Max results to return (default: 10, max: 100)' },
|
|
29
|
+
cursor: { type: 'number', description: 'Pagination cursor for next page' },
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async execute(args, _context) {
|
|
34
|
+
try {
|
|
35
|
+
const searchType = args.type ?? 'video';
|
|
36
|
+
if (searchType === 'user') {
|
|
37
|
+
const users = await this.service.searchUsers(args.query, args.maxResults);
|
|
38
|
+
return { success: true, data: { type: 'user', results: users, count: users.length } };
|
|
39
|
+
}
|
|
40
|
+
const videos = await this.service.searchVideos({
|
|
41
|
+
query: args.query,
|
|
42
|
+
maxResults: args.maxResults,
|
|
43
|
+
cursor: args.cursor,
|
|
44
|
+
});
|
|
45
|
+
return { success: true, data: { type: 'video', results: videos, count: videos.length } };
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return { success: false, error: error.message };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.TikTokSearchTool = TikTokSearchTool;
|
|
53
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;GAEG;;;AAKH,MAAa,gBAAgB;IAwB3B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;QAvBnC,OAAE,GAAG,cAAc,CAAC;QACpB,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,eAAe,CAAC;QAC9B,gBAAW,GAAG,qDAAqD,CAAC;QACpE,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YAC5B,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,CAAC,OAAO,CAAU;YAC5B,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;gBACtD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;oBACvB,WAAW,EAAE,6CAA6C;iBAC3D;gBACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;gBAC5F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;aAC3E;SACF,CAAC;IAEoD,CAAC;IAEvD,KAAK,CAAC,OAAO,CACX,IAAsF,EACtF,QAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;YAExC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxF,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AAhDD,4CAgDC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ITool for getting trending sounds and hashtags on TikTok.
|
|
3
|
+
*/
|
|
4
|
+
import type { ITool, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
|
|
5
|
+
import type { TikTokService } from '../TikTokService';
|
|
6
|
+
export declare class TikTokTrendingTool implements ITool {
|
|
7
|
+
private readonly service;
|
|
8
|
+
readonly id = "tiktokTrending";
|
|
9
|
+
readonly name = "tiktokTrending";
|
|
10
|
+
readonly displayName = "Get Trending";
|
|
11
|
+
readonly description = "Get trending sounds and hashtags on TikTok.";
|
|
12
|
+
readonly category = "social";
|
|
13
|
+
readonly version = "0.1.0";
|
|
14
|
+
readonly hasSideEffects = false;
|
|
15
|
+
readonly inputSchema: {
|
|
16
|
+
type: "object";
|
|
17
|
+
required: readonly [];
|
|
18
|
+
properties: {
|
|
19
|
+
type: {
|
|
20
|
+
type: string;
|
|
21
|
+
enum: string[];
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
maxResults: {
|
|
25
|
+
type: string;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
constructor(service: TikTokService);
|
|
31
|
+
execute(args: {
|
|
32
|
+
type?: 'hashtags' | 'sounds' | 'both';
|
|
33
|
+
maxResults?: number;
|
|
34
|
+
}, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=trending.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trending.d.ts","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,kBAAmB,YAAW,KAAK;IAsBlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IArBpC,SAAgB,EAAE,oBAAoB;IACtC,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,WAAW,kBAAkB;IAC7C,SAAgB,WAAW,iDAAiD;IAC5E,SAAgB,QAAQ,YAAY;IACpC,SAAgB,OAAO,WAAW;IAClC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW;;;;;;;;;;;;;;MAWzB;gBAE2B,OAAO,EAAE,aAAa;IAE7C,OAAO,CACX,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EACpE,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAoBhC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview ITool for getting trending sounds and hashtags on TikTok.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TikTokTrendingTool = void 0;
|
|
8
|
+
class TikTokTrendingTool {
|
|
9
|
+
constructor(service) {
|
|
10
|
+
this.service = service;
|
|
11
|
+
this.id = 'tiktokTrending';
|
|
12
|
+
this.name = 'tiktokTrending';
|
|
13
|
+
this.displayName = 'Get Trending';
|
|
14
|
+
this.description = 'Get trending sounds and hashtags on TikTok.';
|
|
15
|
+
this.category = 'social';
|
|
16
|
+
this.version = '0.1.0';
|
|
17
|
+
this.hasSideEffects = false;
|
|
18
|
+
this.inputSchema = {
|
|
19
|
+
type: 'object',
|
|
20
|
+
required: [],
|
|
21
|
+
properties: {
|
|
22
|
+
type: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
enum: ['hashtags', 'sounds', 'both'],
|
|
25
|
+
description: 'Type of trending content to retrieve (default: both)',
|
|
26
|
+
},
|
|
27
|
+
maxResults: { type: 'number', description: 'Max results per category (default: 20, max: 100)' },
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async execute(args, _context) {
|
|
32
|
+
try {
|
|
33
|
+
const trendType = args.type ?? 'both';
|
|
34
|
+
const maxResults = args.maxResults ?? 20;
|
|
35
|
+
const result = {};
|
|
36
|
+
if (trendType === 'hashtags' || trendType === 'both') {
|
|
37
|
+
result.hashtags = await this.service.getTrendingHashtags(maxResults);
|
|
38
|
+
}
|
|
39
|
+
if (trendType === 'sounds' || trendType === 'both') {
|
|
40
|
+
result.sounds = await this.service.getTrendingSounds(maxResults);
|
|
41
|
+
}
|
|
42
|
+
return { success: true, data: result };
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return { success: false, error: error.message };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.TikTokTrendingTool = TikTokTrendingTool;
|
|
50
|
+
//# sourceMappingURL=trending.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trending.js","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;GAEG;;;AAKH,MAAa,kBAAkB;IAsB7B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;QArBnC,OAAE,GAAG,gBAAgB,CAAC;QACtB,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GAAG,cAAc,CAAC;QAC7B,gBAAW,GAAG,6CAA6C,CAAC;QAC5D,aAAQ,GAAG,QAAQ,CAAC;QACpB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YAC5B,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,EAAW;YACrB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC;oBACpC,WAAW,EAAE,sDAAsD;iBACpE;gBACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;aAChG;SACF,CAAC;IAEoD,CAAC;IAEvD,KAAK,CAAC,OAAO,CACX,IAAoE,EACpE,QAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAEzC,MAAM,MAAM,GAAwB,EAAE,CAAC;YAEvC,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACrD,MAAM,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACnD,MAAM,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AA/CD,gDA+CC"}
|