@agnocon/piece-bumpups 0.1.7

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.
Files changed (47) hide show
  1. package/LICENSE.MIT-AP +24 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +42 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/actions/generate-creator-description.d.ts +6 -0
  7. package/dist/lib/actions/generate-creator-description.d.ts.map +1 -0
  8. package/dist/lib/actions/generate-creator-description.js +68 -0
  9. package/dist/lib/actions/generate-creator-description.js.map +1 -0
  10. package/dist/lib/actions/generate-creator-hashtags.d.ts +7 -0
  11. package/dist/lib/actions/generate-creator-hashtags.d.ts.map +1 -0
  12. package/dist/lib/actions/generate-creator-hashtags.js +79 -0
  13. package/dist/lib/actions/generate-creator-hashtags.js.map +1 -0
  14. package/dist/lib/actions/generate-creator-takeaways.d.ts +7 -0
  15. package/dist/lib/actions/generate-creator-takeaways.d.ts.map +1 -0
  16. package/dist/lib/actions/generate-creator-takeaways.js +73 -0
  17. package/dist/lib/actions/generate-creator-takeaways.js.map +1 -0
  18. package/dist/lib/actions/generate-creator-titles.d.ts +6 -0
  19. package/dist/lib/actions/generate-creator-titles.d.ts.map +1 -0
  20. package/dist/lib/actions/generate-creator-titles.js +68 -0
  21. package/dist/lib/actions/generate-creator-titles.js.map +1 -0
  22. package/dist/lib/actions/generate-timestamps.d.ts +7 -0
  23. package/dist/lib/actions/generate-timestamps.d.ts.map +1 -0
  24. package/dist/lib/actions/generate-timestamps.js +82 -0
  25. package/dist/lib/actions/generate-timestamps.js.map +1 -0
  26. package/dist/lib/actions/send-chat.d.ts +8 -0
  27. package/dist/lib/actions/send-chat.d.ts.map +1 -0
  28. package/dist/lib/actions/send-chat.js +87 -0
  29. package/dist/lib/actions/send-chat.js.map +1 -0
  30. package/dist/lib/common/auth.d.ts +2 -0
  31. package/dist/lib/common/auth.d.ts.map +1 -0
  32. package/dist/lib/common/auth.js +19 -0
  33. package/dist/lib/common/auth.js.map +1 -0
  34. package/dist/lib/common/client.d.ts +4 -0
  35. package/dist/lib/common/client.d.ts.map +1 -0
  36. package/dist/lib/common/client.js +29 -0
  37. package/dist/lib/common/client.js.map +1 -0
  38. package/package.json +46 -0
  39. package/src/index.ts +35 -0
  40. package/src/lib/actions/generate-creator-description.ts +65 -0
  41. package/src/lib/actions/generate-creator-hashtags.ts +79 -0
  42. package/src/lib/actions/generate-creator-takeaways.ts +72 -0
  43. package/src/lib/actions/generate-creator-titles.ts +67 -0
  44. package/src/lib/actions/generate-timestamps.ts +81 -0
  45. package/src/lib/actions/send-chat.ts +88 -0
  46. package/src/lib/common/auth.ts +17 -0
  47. package/src/lib/common/client.ts +25 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendChat = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // Vendored from Activepieces packages/pieces/community/bumpups/src/lib/actions/send-chat.ts (MIT).
6
+ // Generated by packages/scripts/vendor-ap.mjs - do not edit by hand.
7
+ const pieces_framework_1 = require("@agnocon/pieces-framework");
8
+ const auth_1 = require("../common/auth");
9
+ const client_1 = require("../common/client");
10
+ const pieces_common_1 = require("@agnocon/pieces-common");
11
+ exports.sendChat = (0, pieces_framework_1.createAction)({
12
+ name: 'send_chat',
13
+ displayName: 'Send Chat',
14
+ description: 'Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.',
15
+ audience: 'both',
16
+ aiMetadata: { description: 'Sends a question or instruction about a public YouTube video to the Bumpups chat model and returns its answer grounded in the video content, with an output-format option for plain text or markdown. Use for free-form queries about a specific video (the general-purpose option versus the fixed description/hashtags/takeaways/titles/timestamps actions); the video URL is required, while the prompt is optional and defaults to a summary if omitted (max 500 chars). Not idempotent — each call invokes the model and may produce different responses.', idempotent: false },
17
+ auth: auth_1.BumpupsAuth,
18
+ props: {
19
+ videoUrl: pieces_framework_1.Property.ShortText({
20
+ displayName: 'Video URL',
21
+ description: 'The YouTube video URL.',
22
+ required: true,
23
+ }),
24
+ model: pieces_framework_1.Property.StaticDropdown({
25
+ displayName: 'Model',
26
+ required: true,
27
+ defaultValue: 'bump-1.0',
28
+ options: {
29
+ disabled: false,
30
+ options: [
31
+ { label: 'bump-1.0', value: 'bump-1.0' },
32
+ ],
33
+ },
34
+ }),
35
+ prompt: pieces_framework_1.Property.LongText({
36
+ displayName: 'Prompt',
37
+ description: 'Message or query about the video (max 500 chars). If empty, defaults to "summary".',
38
+ required: false,
39
+ }),
40
+ language: pieces_framework_1.Property.StaticDropdown({
41
+ displayName: 'Language',
42
+ required: false,
43
+ defaultValue: 'en',
44
+ options: {
45
+ disabled: false,
46
+ options: [
47
+ { label: 'English (en)', value: 'en' },
48
+ { label: 'Hindi (hi)', value: 'hi' },
49
+ { label: 'Spanish (es)', value: 'es' },
50
+ { label: 'Portuguese (pt)', value: 'pt' },
51
+ { label: 'Russian (ru)', value: 'ru' },
52
+ { label: 'German (de)', value: 'de' },
53
+ { label: 'French (fr)', value: 'fr' },
54
+ { label: 'Japanese (ja)', value: 'ja' },
55
+ { label: 'Korean (ko)', value: 'ko' },
56
+ { label: 'Arabic (ar)', value: 'ar' },
57
+ ],
58
+ },
59
+ }),
60
+ output_format: pieces_framework_1.Property.StaticDropdown({
61
+ displayName: 'Output Format',
62
+ required: false,
63
+ defaultValue: 'text',
64
+ options: {
65
+ disabled: false,
66
+ options: [
67
+ { label: 'Text', value: 'text' },
68
+ { label: 'Markdown', value: 'markdown' },
69
+ ],
70
+ },
71
+ }),
72
+ },
73
+ run(_a) {
74
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, propsValue }) {
75
+ const body = {
76
+ url: propsValue.videoUrl,
77
+ model: propsValue.model,
78
+ prompt: propsValue.prompt || 'summary',
79
+ language: propsValue.language || 'en',
80
+ output_format: propsValue.output_format || 'text',
81
+ };
82
+ const response = yield (0, client_1.makeRequest)(auth.secret_text, pieces_common_1.HttpMethod.POST, '/chat', body);
83
+ return response;
84
+ });
85
+ },
86
+ });
87
+ //# sourceMappingURL=send-chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-chat.js","sourceRoot":"","sources":["../../../src/lib/actions/send-chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const BumpupsAuth: import("@agnocon/pieces-framework").SecretTextProperty<true>;
2
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/common/auth.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,8DAYtB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BumpupsAuth = void 0;
4
+ // Vendored from Activepieces packages/pieces/community/bumpups/src/lib/common/auth.ts (MIT).
5
+ // Generated by packages/scripts/vendor-ap.mjs - do not edit by hand.
6
+ const pieces_framework_1 = require("@agnocon/pieces-framework");
7
+ exports.BumpupsAuth = pieces_framework_1.PieceAuth.SecretText({
8
+ displayName: 'Bumpups API Key',
9
+ description: `**Enter your Bumpups API Key.**
10
+ ---
11
+ ### How to obtain your API key
12
+ 1. Sign up or log in at [bumpups.com](https://bumpups.com).
13
+ 2. Go to **Settings** → **API**.
14
+ 3. Enable API access and generate a key.
15
+ 4. Copy and paste it here.
16
+ `,
17
+ required: true,
18
+ });
19
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/common/auth.ts"],"names":[],"mappings":";;;AAAA,6FAA6F;AAC7F,qEAAqE;AACrE,gEAAsD;AAIzC,QAAA,WAAW,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC5C,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE;;;;;;;CAOhB;IACG,QAAQ,EAAE,IAAI;CAEjB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { HttpMethod } from '@agnocon/pieces-common';
2
+ export declare const BASE_URL = "https://api.bumpups.com";
3
+ export declare function makeRequest(apiKey: string, method: HttpMethod, path: string, body?: unknown): Promise<any>;
4
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/common/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAc,MAAM,wBAAwB,CAAC;AAEhE,eAAO,MAAM,QAAQ,4BAA4B,CAAC;AAElD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,gBAgBf"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BASE_URL = void 0;
4
+ exports.makeRequest = makeRequest;
5
+ const tslib_1 = require("tslib");
6
+ // Vendored from Activepieces packages/pieces/community/bumpups/src/lib/common/client.ts (MIT).
7
+ // Generated by packages/scripts/vendor-ap.mjs - do not edit by hand.
8
+ const pieces_common_1 = require("@agnocon/pieces-common");
9
+ exports.BASE_URL = `https://api.bumpups.com`;
10
+ function makeRequest(apiKey, method, path, body) {
11
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
12
+ try {
13
+ const response = yield pieces_common_1.httpClient.sendRequest({
14
+ method,
15
+ url: `${exports.BASE_URL}${path}`,
16
+ headers: {
17
+ 'X-Api-Key': apiKey,
18
+ 'Content-Type': 'application/json',
19
+ },
20
+ body,
21
+ });
22
+ return response.body;
23
+ }
24
+ catch (error) {
25
+ throw new Error(`Unexpected error: ${error.message || String(error)}`);
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/common/client.ts"],"names":[],"mappings":";;;AAMA,kCAoBC;;AA1BD,+FAA+F;AAC/F,qEAAqE;AACrE,0DAAgE;AAEnD,QAAA,QAAQ,GAAG,yBAAyB,CAAC;AAElD,SAAsB,WAAW,CAC/B,MAAc,EACd,MAAkB,EAClB,IAAY,EACZ,IAAc;;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM;gBACN,GAAG,EAAE,GAAG,gBAAQ,GAAG,IAAI,EAAE;gBACzB,OAAO,EAAE;oBACP,WAAW,EAAE,MAAM;oBACnB,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI;aACL,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CAAA"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@agnocon/piece-bumpups",
3
+ "version": "0.1.7",
4
+ "description": "AgnoCon bumpups connector",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "src",
17
+ "LICENSE.MIT-AP"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.json",
21
+ "vendor": "node ../scripts/vendor-ap.mjs piece-bumpups"
22
+ },
23
+ "dependencies": {
24
+ "@agnocon/core-utils": "0.2.0",
25
+ "@agnocon/piece-types": "0.3.1",
26
+ "@agnocon/pieces-common": "0.12.8",
27
+ "@agnocon/pieces-framework": "0.36.0",
28
+ "tslib": "2.6.2"
29
+ },
30
+ "devDependencies": {
31
+ "@types/node": "20.17.6",
32
+ "typescript": "5.5.4"
33
+ },
34
+ "license": "MIT",
35
+ "agnocon": {
36
+ "originVersion": "0.1.7"
37
+ },
38
+ "publishConfig": {
39
+ "access": "restricted",
40
+ "tag": "latest"
41
+ },
42
+ "keywords": [
43
+ "agnocon",
44
+ "connector"
45
+ ]
46
+ }
package/src/index.ts ADDED
@@ -0,0 +1,35 @@
1
+
2
+ import { createPiece, PieceAuth } from "@agnocon/pieces-framework";
3
+ import { BumpupsAuth } from "./lib/common/auth";
4
+ import { generateCreatorDescription } from "./lib/actions/generate-creator-description";
5
+ import { generateCreatorHashtags } from "./lib/actions/generate-creator-hashtags";
6
+ import { sendChat } from "./lib/actions/send-chat";
7
+ import { generateCreatorTakeaways } from "./lib/actions/generate-creator-takeaways";
8
+ import { generateCreatorTitles } from "./lib/actions/generate-creator-titles";
9
+ import { generateTimestamps } from "./lib/actions/generate-timestamps";
10
+ import { createCustomApiCallAction } from "@agnocon/pieces-common";
11
+ import { BASE_URL } from "./lib/common/client";
12
+
13
+ export const bumpups = createPiece({
14
+ displayName: 'Bumpups',
15
+ auth: BumpupsAuth,
16
+ minimumSupportedRelease: '0.36.1',
17
+ logoUrl: 'https://cdn.activepieces.com/pieces/bumpups.png',
18
+ authors: ['Niket2035','sanket-a11y'],
19
+ actions: [
20
+ generateCreatorDescription,
21
+ generateCreatorHashtags,
22
+ generateCreatorTakeaways,
23
+ generateCreatorTitles,
24
+ generateTimestamps,
25
+ sendChat,
26
+ createCustomApiCallAction({
27
+ auth: BumpupsAuth,
28
+ baseUrl: () => BASE_URL,
29
+ authMapping: async (auth) => ({
30
+ 'X-Api-Key': `${auth}`,
31
+ }),
32
+ }),
33
+ ],
34
+ triggers: [],
35
+ });
@@ -0,0 +1,65 @@
1
+ import { createAction, Property } from '@agnocon/pieces-framework';
2
+ import { BumpupsAuth } from '../common/auth';
3
+ import { makeRequest } from '../common/client';
4
+ import { HttpMethod } from '@agnocon/pieces-common';
5
+
6
+ export const generateCreatorDescription = createAction({
7
+ auth: BumpupsAuth,
8
+ name: 'generateCreatorDescription',
9
+ displayName: 'Generate Creator Description',
10
+ description: 'Generates a compelling description for a YouTube video based on its content.',
11
+ audience: 'both',
12
+ aiMetadata: { description: 'Calls the Bumpups AI model on a public YouTube video URL to generate a ready-to-use video description from the video content. Use when an agent needs a written description for a specific YouTube video; the video URL is required and an optional language code controls the output language. Not idempotent — each call invokes the model and may produce different text.', idempotent: false },
13
+ props: {
14
+ videoUrl: Property.ShortText({
15
+ displayName: 'Video URL',
16
+ description: 'The YouTube video URL.',
17
+ required: true,
18
+ }),
19
+ model: Property.StaticDropdown({
20
+ displayName: 'Model',
21
+ required: true,
22
+ defaultValue: 'bump-1.0',
23
+ options: {
24
+ disabled: false,
25
+ options: [
26
+ { label: 'bump-1.0', value: 'bump-1.0' },
27
+ ],
28
+ },
29
+ }),
30
+ language: Property.StaticDropdown({
31
+ displayName: 'Language',
32
+ required: false,
33
+ defaultValue: 'en',
34
+ options: {
35
+ disabled: false,
36
+ options: [
37
+ { label: 'English (en)', value: 'en' },
38
+ { label: 'Hindi (hi)', value: 'hi' },
39
+ { label: 'Spanish (es)', value: 'es' },
40
+ { label: 'Portuguese (pt)', value: 'pt' },
41
+ { label: 'Russian (ru)', value: 'ru' },
42
+ { label: 'German (de)', value: 'de' },
43
+ { label: 'French (fr)', value: 'fr' },
44
+ { label: 'Japanese (ja)', value: 'ja' },
45
+ { label: 'Korean (ko)', value: 'ko' },
46
+ { label: 'Arabic (ar)', value: 'ar' },
47
+ ],
48
+ },
49
+ }),
50
+ },
51
+ async run({auth, propsValue}) {
52
+ const body = {
53
+ url: propsValue.videoUrl,
54
+ model: propsValue.model,
55
+ languaege: propsValue.language || 'en',
56
+ };
57
+ const response = await makeRequest(
58
+ auth.secret_text,
59
+ HttpMethod.POST,
60
+ '/creator/description',
61
+ body
62
+ );
63
+ return response;
64
+ },
65
+ });
@@ -0,0 +1,79 @@
1
+ import { createAction, Property } from '@agnocon/pieces-framework';
2
+ import { BumpupsAuth } from '../common/auth';
3
+ import { makeRequest } from '../common/client';
4
+ import { HttpMethod } from '@agnocon/pieces-common';
5
+
6
+ export const generateCreatorHashtags = createAction({
7
+ auth: BumpupsAuth,
8
+ name: 'generateCreatorHashtags',
9
+ displayName: 'Generate Creator Hashtags',
10
+ description:
11
+ 'Generates relevant hashtags for a YouTube video based on its content.',
12
+ audience: 'both',
13
+ aiMetadata: { description: 'Calls the Bumpups AI model on a public YouTube video URL to generate social tags from the video content, with an output-format option to return either hashtags or plain keywords. Use when an agent needs discoverability tags for a specific YouTube video; the video URL is required and an optional language code sets the output language. Not idempotent — each call invokes the model and may produce different tags.', idempotent: false },
14
+ props: {
15
+ videoUrl: Property.ShortText({
16
+ displayName: 'Video URL',
17
+ description: 'The YouTube video URL.',
18
+ required: true,
19
+ }),
20
+ model: Property.StaticDropdown({
21
+ displayName: 'Model',
22
+ required: true,
23
+ defaultValue: 'bump-1.0',
24
+ options: {
25
+ disabled: false,
26
+ options: [{ label: 'bump-1.0', value: 'bump-1.0' }],
27
+ },
28
+ }),
29
+ language: Property.StaticDropdown({
30
+ displayName: 'Language',
31
+ required: false,
32
+ defaultValue: 'en',
33
+ options: {
34
+ disabled: false,
35
+ options: [
36
+ { label: 'English (en)', value: 'en' },
37
+ { label: 'Hindi (hi)', value: 'hi' },
38
+ { label: 'Spanish (es)', value: 'es' },
39
+ { label: 'Portuguese (pt)', value: 'pt' },
40
+ { label: 'Russian (ru)', value: 'ru' },
41
+ { label: 'German (de)', value: 'de' },
42
+ { label: 'French (fr)', value: 'fr' },
43
+ { label: 'Japanese (ja)', value: 'ja' },
44
+ { label: 'Korean (ko)', value: 'ko' },
45
+ { label: 'Arabic (ar)', value: 'ar' },
46
+ ],
47
+ },
48
+ }),
49
+ output_format: Property.StaticDropdown({
50
+ displayName: 'Output Format',
51
+ required: false,
52
+ defaultValue: 'text',
53
+ options: {
54
+ disabled: false,
55
+ options: [
56
+ { label: 'Hashtags', value: 'hashtags' },
57
+ { label: 'Keywords', value: 'keywords' },
58
+ ],
59
+ },
60
+ }),
61
+ },
62
+ async run({ auth, propsValue }) {
63
+ const body = {
64
+ url: propsValue.videoUrl,
65
+ model: propsValue.model,
66
+ language: propsValue.language || 'en',
67
+ output_format: propsValue.output_format || 'hashtags',
68
+ };
69
+
70
+ const response = await makeRequest(
71
+ auth.secret_text,
72
+ HttpMethod.POST,
73
+ '/creator/hashtags',
74
+ body
75
+ );
76
+
77
+ return response;
78
+ },
79
+ });
@@ -0,0 +1,72 @@
1
+ import { createAction, Property } from '@agnocon/pieces-framework';
2
+ import { BumpupsAuth } from '../common/auth';
3
+ import { makeRequest } from '../common/client';
4
+ import { HttpMethod } from '@agnocon/pieces-common';
5
+
6
+ export const generateCreatorTakeaways = createAction({
7
+ auth: BumpupsAuth,
8
+ name: 'generateCreatorTakeaways',
9
+ displayName: 'Generate Creator Takeaways',
10
+ description:
11
+ 'Generates key takeaways for a YouTube video based on its content.',
12
+ audience: 'both',
13
+ aiMetadata: { description: 'Calls the Bumpups AI model on a public YouTube video URL to generate key takeaways summarizing the video content, optionally including emojis. Use when an agent needs a bullet-style summary of the main points of a specific YouTube video; the video URL is required and an optional language code sets the output language. Not idempotent — each call invokes the model and may produce different text.', idempotent: false },
14
+ props: {
15
+ videoUrl: Property.ShortText({
16
+ displayName: 'Video URL',
17
+ description: 'The YouTube video URL.',
18
+ required: true,
19
+ }),
20
+ model: Property.StaticDropdown({
21
+ displayName: 'Model',
22
+ required: true,
23
+ defaultValue: 'bump-1.0',
24
+ options: {
25
+ disabled: false,
26
+ options: [{ label: 'bump-1.0', value: 'bump-1.0' }],
27
+ },
28
+ }),
29
+ language: Property.StaticDropdown({
30
+ displayName: 'Language',
31
+ required: false,
32
+ defaultValue: 'en',
33
+ options: {
34
+ disabled: false,
35
+ options: [
36
+ { label: 'English (en)', value: 'en' },
37
+ { label: 'Hindi (hi)', value: 'hi' },
38
+ { label: 'Spanish (es)', value: 'es' },
39
+ { label: 'Portuguese (pt)', value: 'pt' },
40
+ { label: 'Russian (ru)', value: 'ru' },
41
+ { label: 'German (de)', value: 'de' },
42
+ { label: 'French (fr)', value: 'fr' },
43
+ { label: 'Japanese (ja)', value: 'ja' },
44
+ { label: 'Korean (ko)', value: 'ko' },
45
+ { label: 'Arabic (ar)', value: 'ar' },
46
+ ],
47
+ },
48
+ }),
49
+ emojis_enabled: Property.Checkbox({
50
+ displayName: 'Include Emojis',
51
+ description: 'Whether to include emojis in the generated takeaways.',
52
+ required: false,
53
+ defaultValue: false,
54
+ }),
55
+ },
56
+ async run({ auth, propsValue }) {
57
+ const body: any = {
58
+ url: propsValue.videoUrl,
59
+ model: propsValue.model,
60
+ language: propsValue.language || 'en',
61
+ emojis_enabled: propsValue.emojis_enabled || false,
62
+ };
63
+
64
+ const response = await makeRequest(
65
+ auth.secret_text,
66
+ HttpMethod.POST,
67
+ '/creator/takeaways',
68
+ body
69
+ );
70
+ return response;
71
+ },
72
+ });
@@ -0,0 +1,67 @@
1
+ import { createAction, Property } from '@agnocon/pieces-framework';
2
+ import { BumpupsAuth } from '../common/auth';
3
+ import { makeRequest } from '../common/client';
4
+ import { HttpMethod } from '@agnocon/pieces-common';
5
+
6
+
7
+ export const generateCreatorTitles = createAction({
8
+ auth: BumpupsAuth,
9
+ name: 'generateCreatorTitles',
10
+ displayName: 'Generate Creator Titles',
11
+ description: 'Generates engaging titles for a YouTube video based on its content.',
12
+ audience: 'both',
13
+ aiMetadata: { description: 'Calls the Bumpups AI model on a public YouTube video URL to generate engaging title suggestions from the video content. Use when an agent needs candidate titles for a specific YouTube video; the video URL is required and an optional language code sets the output language. Not idempotent — each call invokes the model and may produce different titles.', idempotent: false },
14
+ props: {
15
+ videoUrl: Property.ShortText({
16
+ displayName: 'Video URL',
17
+ description: 'The YouTube video URL.',
18
+ required: true,
19
+ }),
20
+ model: Property.StaticDropdown({
21
+ displayName: 'Model',
22
+ required: true,
23
+ defaultValue: 'bump-1.0',
24
+ options: {
25
+ disabled: false,
26
+ options: [
27
+ { label: 'bump-1.0', value: 'bump-1.0' },
28
+ ],
29
+ },
30
+ }),
31
+ language: Property.StaticDropdown({
32
+ displayName: 'Language',
33
+ required: false,
34
+ defaultValue: 'en',
35
+ options: {
36
+ disabled: false,
37
+ options: [
38
+ { label: 'English (en)', value: 'en' },
39
+ { label: 'Hindi (hi)', value: 'hi' },
40
+ { label: 'Spanish (es)', value: 'es' },
41
+ { label: 'Portuguese (pt)', value: 'pt' },
42
+ { label: 'Russian (ru)', value: 'ru' },
43
+ { label: 'German (de)', value: 'de' },
44
+ { label: 'French (fr)', value: 'fr' },
45
+ { label: 'Japanese (ja)', value: 'ja' },
46
+ { label: 'Korean (ko)', value: 'ko' },
47
+ { label: 'Arabic (ar)', value: 'ar' },
48
+ ],
49
+ },
50
+ }),
51
+ },
52
+ async run({ auth, propsValue }) {
53
+ const body = {
54
+ url: propsValue.videoUrl,
55
+ model: propsValue.model,
56
+ language: propsValue.language || 'en',
57
+ };
58
+ const response = await makeRequest(
59
+ auth.secret_text,
60
+ HttpMethod.POST,
61
+ '/creator/titles',
62
+ body
63
+ );
64
+ return response;
65
+
66
+ },
67
+ });
@@ -0,0 +1,81 @@
1
+ import { createAction, Property } from '@agnocon/pieces-framework';
2
+ import { BumpupsAuth } from '../common/auth';
3
+ import { makeRequest } from '../common/client';
4
+ import { HttpMethod } from '@agnocon/pieces-common';
5
+
6
+ export const generateTimestamps = createAction({
7
+ auth: BumpupsAuth,
8
+ name: 'generateTimestamps',
9
+ displayName: 'Generate Timestamps',
10
+ description: 'Generates detailed timestamps for a YouTube video based on its content.',
11
+ audience: 'both',
12
+ aiMetadata: { description: 'Calls the Bumpups AI model on a public YouTube video URL to generate chapter timestamps from the video content, with a style option for long or short timestamp segments. Use when an agent needs chaptered timestamps for a specific YouTube video; the video URL is required and an optional language code sets the output language. Not idempotent — each call invokes the model and may produce different timestamps.', idempotent: false },
13
+ props: {
14
+ videoUrl: Property.ShortText({
15
+ displayName: 'Video URL',
16
+ description: 'The YouTube video URL.',
17
+ required: true,
18
+ }),
19
+ model: Property.StaticDropdown({
20
+ displayName: 'Model',
21
+ required: true,
22
+ defaultValue: 'bump-1.0',
23
+ options: {
24
+ disabled: false,
25
+ options: [
26
+ { label: 'bump-1.0', value: 'bump-1.0' },
27
+ ],
28
+ },
29
+ }),
30
+ language: Property.StaticDropdown({
31
+ displayName: 'Language',
32
+ required: false,
33
+ defaultValue: 'en',
34
+ options: {
35
+ disabled: false,
36
+ options: [
37
+ { label: 'English (en)', value: 'en' },
38
+ { label: 'Hindi (hi)', value: 'hi' },
39
+ { label: 'Spanish (es)', value: 'es' },
40
+ { label: 'Portuguese (pt)', value: 'pt' },
41
+ { label: 'Russian (ru)', value: 'ru' },
42
+ { label: 'German (de)', value: 'de' },
43
+ { label: 'French (fr)', value: 'fr' },
44
+ { label: 'Japanese (ja)', value: 'ja' },
45
+ { label: 'Korean (ko)', value: 'ko' },
46
+ { label: 'Arabic (ar)', value: 'ar' },
47
+ ],
48
+ },
49
+ }),
50
+ timestamps_style: Property.StaticDropdown({
51
+ displayName: 'Timestamps Style',
52
+ description: 'Preferred length of each timestamp.',
53
+ required: false,
54
+ defaultValue: 'long',
55
+ options: {
56
+ disabled: false,
57
+ options: [
58
+ { label: 'Long', value: 'long' },
59
+ { label: 'Short', value: 'short' },
60
+ ],
61
+ },
62
+ }),
63
+ },
64
+ async run({ auth, propsValue }) {
65
+ const body = {
66
+ url: propsValue.videoUrl,
67
+ model: propsValue.model,
68
+ language: propsValue.language || 'en',
69
+ timestamps_style: propsValue.timestamps_style || 'long',
70
+ };
71
+
72
+ const response = await makeRequest(
73
+ auth.secret_text,
74
+ HttpMethod.POST,
75
+ '/general/timestamps',
76
+ body
77
+ );
78
+
79
+ return response;
80
+ },
81
+ });