@taskmagic/apps-hume-ai 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +3 -0
  2. package/package.json +47 -0
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +47 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/actions/analyze-emotions-from-url.d.ts +7 -0
  7. package/src/lib/actions/analyze-emotions-from-url.js +67 -0
  8. package/src/lib/actions/analyze-emotions-from-url.js.map +1 -0
  9. package/src/lib/actions/create-voice.d.ts +4 -0
  10. package/src/lib/actions/create-voice.js +54 -0
  11. package/src/lib/actions/create-voice.js.map +1 -0
  12. package/src/lib/actions/delete-voice.d.ts +3 -0
  13. package/src/lib/actions/delete-voice.js +46 -0
  14. package/src/lib/actions/delete-voice.js.map +1 -0
  15. package/src/lib/actions/generate-speech-from-file.d.ts +10 -0
  16. package/src/lib/actions/generate-speech-from-file.js +104 -0
  17. package/src/lib/actions/generate-speech-from-file.js.map +1 -0
  18. package/src/lib/actions/generate-text-to-speech.d.ts +11 -0
  19. package/src/lib/actions/generate-text-to-speech.js +140 -0
  20. package/src/lib/actions/generate-text-to-speech.js.map +1 -0
  21. package/src/lib/actions/get-emotion-results.d.ts +3 -0
  22. package/src/lib/actions/get-emotion-results.js +49 -0
  23. package/src/lib/actions/get-emotion-results.js.map +1 -0
  24. package/src/lib/common/auth.d.ts +1 -0
  25. package/src/lib/common/auth.js +33 -0
  26. package/src/lib/common/auth.js.map +1 -0
  27. package/src/lib/common/client.d.ts +12 -0
  28. package/src/lib/common/client.js +24 -0
  29. package/src/lib/common/client.js.map +1 -0
  30. package/src/lib/triggers/new-voice.d.ts +2 -0
  31. package/src/lib/triggers/new-voice.js +101 -0
  32. package/src/lib/triggers/new-voice.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Hume AI
2
+
3
+ Hume AI piece for taskmagic: expressive text-to-speech, custom voice management, and batch emotion (expression measurement) analysis.
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@taskmagic/apps-hume-ai",
3
+ "version": "0.0.1",
4
+ "dependencies": {
5
+ "@anthropic-ai/sdk": "0.33.1",
6
+ "@sinclair/typebox": "0.34.11",
7
+ "axios": "1.17.0",
8
+ "axios-retry": "4.4.1",
9
+ "deepmerge-ts": "7.1.0",
10
+ "mime-types": "2.1.35",
11
+ "nanoid": "3.3.8",
12
+ "openai": "4.67.1",
13
+ "replicate": "0.34.1",
14
+ "semver": "7.6.0",
15
+ "zod": "3.25.76",
16
+ "@taskmagic/pieces-common": "0.4.4",
17
+ "@taskmagic/pieces-framework": "0.7.46",
18
+ "@taskmagic/shared": "0.10.171",
19
+ "tslib": "1.14.1"
20
+ },
21
+ "overrides": {
22
+ "cross-spawn": "7.0.6",
23
+ "elliptic": "^6.6.1",
24
+ "fast-xml-parser": "^4.4.1",
25
+ "protobufjs": "^7.5.5",
26
+ "tmp": "^0.2.4",
27
+ "koa": "^2.16.4",
28
+ "picomatch": "^4.0.4",
29
+ "langsmith": "^0.6.0",
30
+ "serialize-javascript": "^6.0.2",
31
+ "elevenlabs": {
32
+ "form-data": "^4.0.4"
33
+ },
34
+ "@tryfabric/martian": {
35
+ "@notionhq/client": "$@notionhq/client"
36
+ },
37
+ "vite": {
38
+ "rollup": "npm:@rollup/wasm-node@^4.61.1"
39
+ }
40
+ },
41
+ "resolutions": {
42
+ "rollup": "npm:@rollup/wasm-node@^4.61.1"
43
+ },
44
+ "types": "./src/index.d.ts",
45
+ "main": "./src/index.js",
46
+ "type": "commonjs"
47
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const humeAi: import("@taskmagic/pieces-framework").Piece<import("@taskmagic/pieces-framework").SecretTextProperty<true>>;
package/src/index.js ADDED
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.humeAi = void 0;
4
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
5
+ const shared_1 = require("@taskmagic/shared");
6
+ const auth_1 = require("./lib/common/auth");
7
+ const generate_text_to_speech_1 = require("./lib/actions/generate-text-to-speech");
8
+ const generate_speech_from_file_1 = require("./lib/actions/generate-speech-from-file");
9
+ const create_voice_1 = require("./lib/actions/create-voice");
10
+ const delete_voice_1 = require("./lib/actions/delete-voice");
11
+ const analyze_emotions_from_url_1 = require("./lib/actions/analyze-emotions-from-url");
12
+ const get_emotion_results_1 = require("./lib/actions/get-emotion-results");
13
+ const new_voice_1 = require("./lib/triggers/new-voice");
14
+ exports.humeAi = (0, pieces_framework_1.createPiece)({
15
+ displayName: 'Hume AI',
16
+ auth: auth_1.humeAiAuth,
17
+ minimumSupportedRelease: '0.30.0',
18
+ logoUrl: 'https://cdn.activepieces.com/pieces/hume-ai.png',
19
+ authors: ['onyedikachi-david'],
20
+ categories: [shared_1.PieceCategory.ARTIFICIAL_INTELLIGENCE],
21
+ description: 'Generate expressive text-to-speech audio, save and manage custom voices, and run batch emotion (expression measurement) analysis on media with Hume AI.',
22
+ ai: {
23
+ description: 'Turn text into expressive spoken audio, manage reusable custom voices, and measure emotional expression in images, video, or audio using Hume AI.',
24
+ keywords: [
25
+ 'hume',
26
+ 'text to speech',
27
+ 'tts',
28
+ 'speech synthesis',
29
+ 'voice generation',
30
+ 'custom voice',
31
+ 'emotion analysis',
32
+ 'expression measurement',
33
+ 'sentiment',
34
+ 'audio',
35
+ ],
36
+ },
37
+ actions: [
38
+ generate_text_to_speech_1.generateTextToSpeech,
39
+ generate_speech_from_file_1.generateSpeechFromFile,
40
+ create_voice_1.createVoice,
41
+ delete_voice_1.deleteVoice,
42
+ analyze_emotions_from_url_1.analyzeEmotionsFromUrl,
43
+ get_emotion_results_1.getEmotionResults,
44
+ ],
45
+ triggers: [new_voice_1.newVoiceTrigger],
46
+ });
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/hume-ai/src/index.ts"],"names":[],"mappings":";;;AAAA,kEAA0D;AAC1D,8CAAkD;AAClD,4CAA+C;AAC/C,mFAA6E;AAC7E,uFAAiF;AACjF,6DAAyD;AACzD,6DAAyD;AACzD,uFAAiF;AACjF,2EAAsE;AACtE,wDAA2D;AAE9C,QAAA,MAAM,GAAG,IAAA,8BAAW,EAAC;IAChC,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,iBAAU;IAChB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,iDAAiD;IAC1D,OAAO,EAAE,CAAC,mBAAmB,CAAC;IAC9B,UAAU,EAAE,CAAC,sBAAa,CAAC,uBAAuB,CAAC;IACnD,WAAW,EACT,yJAAyJ;IAC3J,EAAE,EAAE;QACF,WAAW,EACT,mJAAmJ;QACrJ,QAAQ,EAAE;YACR,MAAM;YACN,gBAAgB;YAChB,KAAK;YACL,kBAAkB;YAClB,kBAAkB;YAClB,cAAc;YACd,kBAAkB;YAClB,wBAAwB;YACxB,WAAW;YACX,OAAO;SACR;KACF;IACD,OAAO,EAAE;QACP,8CAAoB;QACpB,kDAAsB;QACtB,0BAAW;QACX,0BAAW;QACX,kDAAsB;QACtB,uCAAiB;KAClB;IACD,QAAQ,EAAE,CAAC,2BAAe,CAAC;CAC5B,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const analyzeEmotionsFromUrl: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ urls: import("@taskmagic/pieces-framework").ArrayProperty<true>;
3
+ models: import("@taskmagic/pieces-framework").ObjectProperty<false>;
4
+ transcription: import("@taskmagic/pieces-framework").CheckboxProperty<false>;
5
+ callbackUrl: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
6
+ notify: import("@taskmagic/pieces-framework").CheckboxProperty<false>;
7
+ }>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyzeEmotionsFromUrl = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../common/auth");
8
+ const client_1 = require("../common/client");
9
+ exports.analyzeEmotionsFromUrl = (0, pieces_framework_1.createAction)({
10
+ name: 'analyze_emotions_from_url',
11
+ displayName: 'Analyze Emotions from URL',
12
+ description: 'Start a batch emotion analysis job for media files hosted at URLs',
13
+ auth: auth_1.humeAiAuth,
14
+ props: {
15
+ urls: pieces_framework_1.Property.Array({
16
+ displayName: 'Media URLs',
17
+ description: 'URLs to media files to analyze (images, videos, audio). Supports up to 100 URLs or archives (.zip, .tar.gz)',
18
+ required: true,
19
+ }),
20
+ models: pieces_framework_1.Property.Object({
21
+ displayName: 'Models Configuration',
22
+ description: 'Specify which models to use for inference. Leave empty to run all models.',
23
+ required: false,
24
+ }),
25
+ transcription: pieces_framework_1.Property.Checkbox({
26
+ displayName: 'Include Transcription',
27
+ description: 'Include speech-to-text transcription in the analysis',
28
+ required: false,
29
+ defaultValue: false,
30
+ }),
31
+ callbackUrl: pieces_framework_1.Property.ShortText({
32
+ displayName: 'Callback URL',
33
+ description: 'Optional webhook URL to receive results when the job completes',
34
+ required: false,
35
+ }),
36
+ notify: pieces_framework_1.Property.Checkbox({
37
+ displayName: 'Email Notification',
38
+ description: 'Send email notification upon job completion or failure',
39
+ required: false,
40
+ defaultValue: true,
41
+ }),
42
+ },
43
+ run(context) {
44
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
45
+ const apiKey = context.auth;
46
+ const { urls, models, transcription, callbackUrl, notify } = context.propsValue;
47
+ const request = Object.assign(Object.assign(Object.assign(Object.assign({ urls: urls }, (models && { models })), (transcription && { transcription: {} })), (callbackUrl && { callback_url: callbackUrl })), (notify !== undefined && { notify }));
48
+ try {
49
+ const response = yield (0, client_1.humeApiCall)({
50
+ apiKey,
51
+ method: pieces_common_1.HttpMethod.POST,
52
+ resourceUrl: '/v0/batch/jobs',
53
+ body: request,
54
+ });
55
+ return {
56
+ jobId: response.job_id,
57
+ status: 'processing',
58
+ message: 'Emotion analysis job started successfully. Use "Get Emotion Results" action to retrieve predictions.',
59
+ };
60
+ }
61
+ catch (error) {
62
+ throw new Error(`Emotion analysis job failed to start: ${error instanceof Error ? error.message : 'Unknown error'}`);
63
+ }
64
+ });
65
+ },
66
+ });
67
+ //# sourceMappingURL=analyze-emotions-from-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-emotions-from-url.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/actions/analyze-emotions-from-url.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,yCAA4C;AAC5C,6CAA+C;AAMlC,QAAA,sBAAsB,GAAG,IAAA,+BAAY,EAAC;IACjD,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,2BAA2B;IACxC,WAAW,EAAE,mEAAmE;IAChF,IAAI,EAAE,iBAAU;IAChB,KAAK,EAAE;QACL,IAAI,EAAE,2BAAQ,CAAC,KAAK,CAAC;YACnB,WAAW,EAAE,YAAY;YACzB,WAAW,EACT,6GAA6G;YAC/G,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,sBAAsB;YACnC,WAAW,EACT,2EAA2E;YAC7E,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,aAAa,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC/B,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;SACpB,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,cAAc;YAC3B,WAAW,EACT,gEAAgE;YAClE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACxB,WAAW,EAAE,oBAAoB;YACjC,WAAW,EAAE,wDAAwD;YACrE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,IAAI;SACnB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAc,CAAC;YACtC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,GACxD,OAAO,CAAC,UAAU,CAAC;YAErB,MAAM,OAAO,6DACX,IAAI,EAAE,IAAgB,IACnB,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,GACtB,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GACxC,CAAC,WAAW,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,GAC9C,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC,CACxC,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAAmB;oBACnD,MAAM;oBACN,MAAM,EAAE,0BAAU,CAAC,IAAI;oBACvB,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC;gBAEH,OAAO;oBACL,KAAK,EAAE,QAAQ,CAAC,MAAM;oBACtB,MAAM,EAAE,YAAY;oBACpB,OAAO,EACL,sGAAsG;iBACzG,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,yCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const createVoice: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ generationId: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ voiceName: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
4
+ }>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createVoice = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../common/auth");
8
+ const client_1 = require("../common/client");
9
+ exports.createVoice = (0, pieces_framework_1.createAction)({
10
+ name: 'create_voice',
11
+ displayName: 'Create Voice',
12
+ description: 'Save a custom voice to your account using a TTS generation ID',
13
+ auth: auth_1.humeAiAuth,
14
+ props: {
15
+ generationId: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Generation ID',
17
+ description: 'The unique ID from a previous TTS generation to save as a custom voice',
18
+ required: true,
19
+ }),
20
+ voiceName: pieces_framework_1.Property.ShortText({
21
+ displayName: 'Voice Name',
22
+ description: 'A descriptive name for your custom voice',
23
+ required: true,
24
+ }),
25
+ },
26
+ run(context) {
27
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
28
+ const apiKey = context.auth;
29
+ const { generationId, voiceName } = context.propsValue;
30
+ try {
31
+ const response = yield (0, client_1.humeApiCall)({
32
+ apiKey,
33
+ method: pieces_common_1.HttpMethod.POST,
34
+ resourceUrl: '/v0/tts/voices',
35
+ body: {
36
+ generation_id: generationId,
37
+ name: voiceName,
38
+ },
39
+ });
40
+ return {
41
+ id: response.id,
42
+ name: response.name,
43
+ provider: response.provider,
44
+ compatibleOctaveModels: response.compatible_octave_models,
45
+ generationId: generationId,
46
+ };
47
+ }
48
+ catch (error) {
49
+ throw new Error(`Voice creation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
50
+ }
51
+ });
52
+ },
53
+ });
54
+ //# sourceMappingURL=create-voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-voice.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/actions/create-voice.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,yCAA4C;AAC5C,6CAA+C;AASlC,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,+DAA+D;IAC5E,IAAI,EAAE,iBAAU;IAChB,KAAK,EAAE;QACL,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,eAAe;YAC5B,WAAW,EACT,wEAAwE;YAC1E,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAc,CAAC;YACtC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAEvD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAAgB;oBAChD,MAAM;oBACN,MAAM,EAAE,0BAAU,CAAC,IAAI;oBACvB,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE;wBACJ,aAAa,EAAE,YAAY;wBAC3B,IAAI,EAAE,SAAS;qBAChB;iBACF,CAAC,CAAC;gBAEH,OAAO;oBACL,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,sBAAsB,EAAE,QAAQ,CAAC,wBAAwB;oBACzD,YAAY,EAAE,YAAY;iBAC3B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,0BACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const deleteVoice: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ voiceName: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ }>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteVoice = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../common/auth");
8
+ const client_1 = require("../common/client");
9
+ exports.deleteVoice = (0, pieces_framework_1.createAction)({
10
+ name: 'delete_voice',
11
+ displayName: 'Delete Voice',
12
+ description: 'Delete a custom voice from your account',
13
+ auth: auth_1.humeAiAuth,
14
+ props: {
15
+ voiceName: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Voice Name',
17
+ description: 'The name of the custom voice to delete',
18
+ required: true,
19
+ }),
20
+ },
21
+ run(context) {
22
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
23
+ const apiKey = context.auth;
24
+ const { voiceName } = context.propsValue;
25
+ try {
26
+ yield (0, client_1.humeApiCall)({
27
+ apiKey,
28
+ method: pieces_common_1.HttpMethod.DELETE,
29
+ resourceUrl: '/v0/tts/voices',
30
+ queryParams: {
31
+ name: voiceName,
32
+ },
33
+ });
34
+ return {
35
+ success: true,
36
+ message: `Voice "${voiceName}" deleted successfully`,
37
+ deletedVoice: voiceName,
38
+ };
39
+ }
40
+ catch (error) {
41
+ throw new Error(`Voice deletion failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
42
+ }
43
+ });
44
+ },
45
+ });
46
+ //# sourceMappingURL=delete-voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-voice.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/actions/delete-voice.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,yCAA4C;AAC5C,6CAA+C;AAElC,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,yCAAyC;IACtD,IAAI,EAAE,iBAAU;IAChB,KAAK,EAAE;QACL,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,wCAAwC;YACrD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAc,CAAC;YACtC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAEzC,IAAI,CAAC;gBACH,MAAM,IAAA,oBAAW,EAAC;oBAChB,MAAM;oBACN,MAAM,EAAE,0BAAU,CAAC,MAAM;oBACzB,WAAW,EAAE,gBAAgB;oBAC7B,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;qBAChB;iBACF,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,UAAU,SAAS,wBAAwB;oBACpD,YAAY,EAAE,SAAS;iBACxB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,0BACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const generateSpeechFromFile: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ text: import("@taskmagic/pieces-framework").LongTextProperty<true>;
3
+ voiceDescription: import("@taskmagic/pieces-framework").LongTextProperty<false>;
4
+ format: import("@taskmagic/pieces-framework").StaticDropdownProperty<string, true>;
5
+ speed: import("@taskmagic/pieces-framework").NumberProperty<false>;
6
+ contextText: import("@taskmagic/pieces-framework").LongTextProperty<false>;
7
+ contextDescription: import("@taskmagic/pieces-framework").LongTextProperty<false>;
8
+ trailingSilence: import("@taskmagic/pieces-framework").NumberProperty<false>;
9
+ splitUtterances: import("@taskmagic/pieces-framework").CheckboxProperty<false>;
10
+ }>;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSpeechFromFile = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../common/auth");
8
+ const client_1 = require("../common/client");
9
+ exports.generateSpeechFromFile = (0, pieces_framework_1.createAction)({
10
+ name: 'generate_speech_from_file',
11
+ displayName: 'Generate Speech from File',
12
+ description: "Convert audio file to speech using Hume AI's expressive text-to-speech technology",
13
+ auth: auth_1.humeAiAuth,
14
+ props: {
15
+ text: pieces_framework_1.Property.LongText({
16
+ displayName: 'Text',
17
+ description: 'The text to convert to speech',
18
+ required: true,
19
+ }),
20
+ voiceDescription: pieces_framework_1.Property.LongText({
21
+ displayName: 'Voice Description',
22
+ description: 'Natural language description of how the speech should sound (tone, accent, style, etc.). If no voice is specified, this will generate a dynamic voice.',
23
+ required: false,
24
+ }),
25
+ format: pieces_framework_1.Property.StaticDropdown({
26
+ displayName: 'Audio Format',
27
+ description: 'The output audio file format',
28
+ options: {
29
+ options: [
30
+ { label: 'MP3', value: 'mp3' },
31
+ { label: 'WAV', value: 'wav' },
32
+ { label: 'PCM', value: 'pcm' },
33
+ ],
34
+ },
35
+ required: true,
36
+ defaultValue: 'mp3',
37
+ }),
38
+ speed: pieces_framework_1.Property.Number({
39
+ displayName: 'Speed',
40
+ description: 'Speed multiplier for the synthesized speech (0.75-1.5 recommended)',
41
+ required: false,
42
+ defaultValue: 1.0,
43
+ }),
44
+ contextText: pieces_framework_1.Property.LongText({
45
+ displayName: 'Context Text',
46
+ description: 'Optional context text to influence speech style and prosody consistency',
47
+ required: false,
48
+ }),
49
+ contextDescription: pieces_framework_1.Property.LongText({
50
+ displayName: 'Context Description',
51
+ description: 'Description for the context text (how it should sound)',
52
+ required: false,
53
+ }),
54
+ trailingSilence: pieces_framework_1.Property.Number({
55
+ displayName: 'Trailing Silence (seconds)',
56
+ description: 'Duration of silence to add at the end of the speech',
57
+ required: false,
58
+ }),
59
+ splitUtterances: pieces_framework_1.Property.Checkbox({
60
+ displayName: 'Split Utterances',
61
+ description: 'Automatically split text into natural-sounding speech segments',
62
+ required: false,
63
+ defaultValue: true,
64
+ }),
65
+ },
66
+ run(context) {
67
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
68
+ const apiKey = context.auth;
69
+ const { text, voiceDescription, format, speed, contextText, contextDescription, trailingSilence, splitUtterances, } = context.propsValue;
70
+ const request = Object.assign({ utterances: [
71
+ Object.assign(Object.assign(Object.assign({ text }, (voiceDescription && { description: voiceDescription })), (speed && speed !== 1.0 && { speed })), (trailingSilence && { trailing_silence: trailingSilence })),
72
+ ], format: {
73
+ type: format,
74
+ } }, (splitUtterances !== undefined && {
75
+ split_utterances: splitUtterances,
76
+ }));
77
+ if (contextText) {
78
+ request['context'] = {
79
+ utterances: [
80
+ Object.assign({ text: contextText }, (contextDescription && { description: contextDescription })),
81
+ ],
82
+ };
83
+ }
84
+ try {
85
+ const audioBuffer = yield (0, client_1.humeApiCall)({
86
+ apiKey,
87
+ method: pieces_common_1.HttpMethod.POST,
88
+ resourceUrl: '/v0/tts/file',
89
+ body: request,
90
+ responseType: 'arraybuffer',
91
+ });
92
+ const buffer = Buffer.from(audioBuffer);
93
+ return yield context.files.write({
94
+ data: buffer,
95
+ fileName: `speech_${Date.now()}.${format}`,
96
+ });
97
+ }
98
+ catch (error) {
99
+ throw new Error(`Speech file generation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
100
+ }
101
+ });
102
+ },
103
+ });
104
+ //# sourceMappingURL=generate-speech-from-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-speech-from-file.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/actions/generate-speech-from-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const generateTextToSpeech: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ text: import("@taskmagic/pieces-framework").LongTextProperty<true>;
3
+ voiceDescription: import("@taskmagic/pieces-framework").LongTextProperty<false>;
4
+ format: import("@taskmagic/pieces-framework").StaticDropdownProperty<string, true>;
5
+ speed: import("@taskmagic/pieces-framework").NumberProperty<false>;
6
+ numGenerations: import("@taskmagic/pieces-framework").NumberProperty<false>;
7
+ contextText: import("@taskmagic/pieces-framework").LongTextProperty<false>;
8
+ contextDescription: import("@taskmagic/pieces-framework").LongTextProperty<false>;
9
+ trailingSilence: import("@taskmagic/pieces-framework").NumberProperty<false>;
10
+ splitUtterances: import("@taskmagic/pieces-framework").CheckboxProperty<false>;
11
+ }>;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTextToSpeech = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../common/auth");
8
+ const client_1 = require("../common/client");
9
+ exports.generateTextToSpeech = (0, pieces_framework_1.createAction)({
10
+ name: 'generate_text_to_speech',
11
+ displayName: 'Generate Text to Speech',
12
+ description: "Convert text to speech using Hume AI's expressive text-to-speech technology",
13
+ auth: auth_1.humeAiAuth,
14
+ props: {
15
+ text: pieces_framework_1.Property.LongText({
16
+ displayName: 'Text',
17
+ description: 'The text to convert to speech',
18
+ required: true,
19
+ }),
20
+ voiceDescription: pieces_framework_1.Property.LongText({
21
+ displayName: 'Voice Description',
22
+ description: 'Natural language description of how the speech should sound (tone, accent, style, etc.). If no voice is specified, this will generate a dynamic voice.',
23
+ required: false,
24
+ }),
25
+ format: pieces_framework_1.Property.StaticDropdown({
26
+ displayName: 'Audio Format',
27
+ description: 'The output audio file format',
28
+ options: {
29
+ options: [
30
+ { label: 'MP3', value: 'mp3' },
31
+ { label: 'WAV', value: 'wav' },
32
+ { label: 'PCM', value: 'pcm' },
33
+ ],
34
+ },
35
+ required: true,
36
+ defaultValue: 'mp3',
37
+ }),
38
+ speed: pieces_framework_1.Property.Number({
39
+ displayName: 'Speed',
40
+ description: 'Speed multiplier for the synthesized speech (0.75-1.5 recommended)',
41
+ required: false,
42
+ defaultValue: 1.0,
43
+ }),
44
+ numGenerations: pieces_framework_1.Property.Number({
45
+ displayName: 'Number of Generations',
46
+ description: 'Number of audio generations to produce (1-5 recommended)',
47
+ required: false,
48
+ defaultValue: 1,
49
+ }),
50
+ contextText: pieces_framework_1.Property.LongText({
51
+ displayName: 'Context Text',
52
+ description: 'Optional context text to influence speech style and prosody consistency',
53
+ required: false,
54
+ }),
55
+ contextDescription: pieces_framework_1.Property.LongText({
56
+ displayName: 'Context Description',
57
+ description: 'Description for the context text (how it should sound)',
58
+ required: false,
59
+ }),
60
+ trailingSilence: pieces_framework_1.Property.Number({
61
+ displayName: 'Trailing Silence (seconds)',
62
+ description: 'Duration of silence to add at the end of the speech',
63
+ required: false,
64
+ }),
65
+ splitUtterances: pieces_framework_1.Property.Checkbox({
66
+ displayName: 'Split Utterances',
67
+ description: 'Automatically split text into natural-sounding speech segments',
68
+ required: false,
69
+ defaultValue: true,
70
+ }),
71
+ },
72
+ run(context) {
73
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
74
+ const apiKey = context.auth;
75
+ const { text, voiceDescription, format, speed, numGenerations, contextText, contextDescription, trailingSilence, splitUtterances, } = context.propsValue;
76
+ const request = Object.assign(Object.assign({ utterances: [
77
+ Object.assign(Object.assign(Object.assign({ text }, (voiceDescription && { description: voiceDescription })), (speed && speed !== 1.0 && { speed })), (trailingSilence && { trailing_silence: trailingSilence })),
78
+ ], format: {
79
+ type: format,
80
+ } }, (numGenerations &&
81
+ numGenerations !== 1 && { num_generations: numGenerations })), (splitUtterances !== undefined && {
82
+ split_utterances: splitUtterances,
83
+ }));
84
+ if (contextText) {
85
+ request['context'] = {
86
+ utterances: [
87
+ Object.assign({ text: contextText }, (contextDescription && { description: contextDescription })),
88
+ ],
89
+ };
90
+ }
91
+ try {
92
+ const response = yield (0, client_1.humeApiCall)({
93
+ apiKey,
94
+ method: pieces_common_1.HttpMethod.POST,
95
+ resourceUrl: '/v0/tts',
96
+ body: request,
97
+ });
98
+ const firstGeneration = response.generations[0];
99
+ if (!firstGeneration || !firstGeneration.audio) {
100
+ throw new Error('No audio generated');
101
+ }
102
+ const audioBuffer = Buffer.from(firstGeneration.audio, 'base64');
103
+ if (response.generations.length === 1) {
104
+ return yield context.files.write({
105
+ data: audioBuffer,
106
+ fileName: `tts_${Date.now()}.${format}`,
107
+ });
108
+ }
109
+ const filePromises = response.generations.map((gen, index) => tslib_1.__awaiter(this, void 0, void 0, function* () {
110
+ const genBuffer = Buffer.from(gen.audio, 'base64');
111
+ const file = yield context.files.write({
112
+ data: genBuffer,
113
+ fileName: `tts_gen_${index + 1}_${Date.now()}.${format}`,
114
+ });
115
+ return {
116
+ file: file,
117
+ durationSeconds: gen.duration,
118
+ sizeBytes: gen.file_size,
119
+ };
120
+ }));
121
+ const allGenerations = yield Promise.all(filePromises);
122
+ return {
123
+ primaryFile: yield context.files.write({
124
+ data: audioBuffer,
125
+ fileName: `tts_primary_${Date.now()}.${format}`,
126
+ }),
127
+ format: format,
128
+ requestId: response.request_id,
129
+ audioDurationSeconds: firstGeneration.duration,
130
+ audioSizeBytes: firstGeneration.file_size,
131
+ allGenerations: allGenerations,
132
+ };
133
+ }
134
+ catch (error) {
135
+ throw new Error(`Text-to-speech generation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
136
+ }
137
+ });
138
+ },
139
+ });
140
+ //# sourceMappingURL=generate-text-to-speech.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-text-to-speech.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/actions/generate-text-to-speech.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const getEmotionResults: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ jobId: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ }>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEmotionResults = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../common/auth");
8
+ const client_1 = require("../common/client");
9
+ exports.getEmotionResults = (0, pieces_framework_1.createAction)({
10
+ name: 'get_emotion_results',
11
+ displayName: 'Get Emotion Results',
12
+ description: 'Retrieve emotion analysis predictions from a completed batch job',
13
+ auth: auth_1.humeAiAuth,
14
+ props: {
15
+ jobId: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Job ID',
17
+ description: 'The ID of the emotion analysis job to retrieve results for',
18
+ required: true,
19
+ }),
20
+ },
21
+ run(context) {
22
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
23
+ const apiKey = context.auth;
24
+ const { jobId } = context.propsValue;
25
+ try {
26
+ const predictions = yield (0, client_1.humeApiCall)({
27
+ apiKey,
28
+ method: pieces_common_1.HttpMethod.GET,
29
+ resourceUrl: `/v0/batch/jobs/${jobId}/predictions`,
30
+ });
31
+ const jobDetails = yield (0, client_1.humeApiCall)({
32
+ apiKey,
33
+ method: pieces_common_1.HttpMethod.GET,
34
+ resourceUrl: `/v0/batch/jobs/${jobId}`,
35
+ });
36
+ return {
37
+ jobId: jobId,
38
+ status: jobDetails.state,
39
+ predictions: predictions,
40
+ predictionCount: Array.isArray(predictions) ? predictions.length : 0,
41
+ };
42
+ }
43
+ catch (error) {
44
+ throw new Error(`Failed to retrieve emotion results: ${error instanceof Error ? error.message : 'Unknown error'}`);
45
+ }
46
+ });
47
+ },
48
+ });
49
+ //# sourceMappingURL=get-emotion-results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-emotion-results.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/actions/get-emotion-results.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,yCAA4C;AAC5C,6CAA+C;AAQlC,QAAA,iBAAiB,GAAG,IAAA,+BAAY,EAAC;IAC5C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,kEAAkE;IAC/E,IAAI,EAAE,iBAAU;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAc,CAAC;YACtC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAErC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,IAAA,oBAAW,EAAY;oBAC/C,MAAM;oBACN,MAAM,EAAE,0BAAU,CAAC,GAAG;oBACtB,WAAW,EAAE,kBAAkB,KAAK,cAAc;iBACnD,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAW,EAAa;oBAC/C,MAAM;oBACN,MAAM,EAAE,0BAAU,CAAC,GAAG;oBACtB,WAAW,EAAE,kBAAkB,KAAK,EAAE;iBACvC,CAAC,CAAC;gBAEH,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,UAAU,CAAC,KAAK;oBACxB,WAAW,EAAE,WAAW;oBACxB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACrE,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,uCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const humeAiAuth: import("@taskmagic/pieces-framework").SecretTextProperty<true>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.humeAiAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const client_1 = require("./client");
8
+ exports.humeAiAuth = pieces_framework_1.PieceAuth.SecretText({
9
+ displayName: 'API Key',
10
+ description: 'Enter your Hume AI API key from the Hume Portal (https://platform.hume.ai/settings/keys)',
11
+ required: true,
12
+ validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
13
+ try {
14
+ yield pieces_common_1.httpClient.sendRequest({
15
+ method: pieces_common_1.HttpMethod.GET,
16
+ url: `${client_1.HUME_API_BASE_URL}/v0/batch/jobs`,
17
+ headers: {
18
+ 'X-Hume-Api-Key': auth,
19
+ },
20
+ });
21
+ return {
22
+ valid: true,
23
+ };
24
+ }
25
+ catch (error) {
26
+ return {
27
+ valid: false,
28
+ error: 'Invalid API key. Please check your Hume AI API key.',
29
+ };
30
+ }
31
+ }),
32
+ });
33
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/common/auth.ts"],"names":[],"mappings":";;;;AAAA,kEAAwD;AACxD,4DAAkE;AAClE,qCAA6C;AAEhC,QAAA,UAAU,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC7C,WAAW,EAAE,SAAS;IACtB,WAAW,EACT,0FAA0F;IAC5F,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC3B,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,GAAG,0BAAiB,gBAAgB;gBACzC,OAAO,EAAE;oBACP,gBAAgB,EAAE,IAAc;iBACjC;aACF,CAAC,CAAC;YACH,OAAO;gBACL,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,qDAAqD;aAC7D,CAAC;QACJ,CAAC;IACH,CAAC,CAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { HttpMethod, HttpMessageBody, QueryParams } from '@taskmagic/pieces-common';
2
+ export declare const HUME_API_BASE_URL = "https://api.hume.ai";
3
+ type HumeRequest = {
4
+ apiKey: string;
5
+ method: HttpMethod;
6
+ resourceUrl: string;
7
+ body?: HttpMessageBody;
8
+ queryParams?: QueryParams;
9
+ responseType?: 'json' | 'arraybuffer';
10
+ };
11
+ export declare function humeApiCall<T>({ apiKey, method, resourceUrl, body, queryParams, responseType, }: HumeRequest): Promise<T>;
12
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HUME_API_BASE_URL = void 0;
4
+ exports.humeApiCall = humeApiCall;
5
+ const tslib_1 = require("tslib");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ exports.HUME_API_BASE_URL = 'https://api.hume.ai';
8
+ function humeApiCall(_a) {
9
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ apiKey, method, resourceUrl, body, queryParams, responseType, }) {
10
+ const response = yield pieces_common_1.httpClient.sendRequest({
11
+ method,
12
+ url: `${exports.HUME_API_BASE_URL}${resourceUrl}`,
13
+ headers: {
14
+ 'X-Hume-Api-Key': apiKey,
15
+ 'Content-Type': 'application/json',
16
+ },
17
+ body,
18
+ queryParams,
19
+ responseType: responseType !== null && responseType !== void 0 ? responseType : 'json',
20
+ });
21
+ return response.body;
22
+ });
23
+ }
24
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/common/client.ts"],"names":[],"mappings":";;;AAkBA,kCAoBC;;AAtCD,4DAKkC;AAErB,QAAA,iBAAiB,GAAG,qBAAqB,CAAC;AAWvD,SAAsB,WAAW;iEAAI,EACnC,MAAM,EACN,MAAM,EACN,WAAW,EACX,IAAI,EACJ,WAAW,EACX,YAAY,GACA;QACZ,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAI;YAC/C,MAAM;YACN,GAAG,EAAE,GAAG,yBAAiB,GAAG,WAAW,EAAE;YACzC,OAAO,EAAE;gBACP,gBAAgB,EAAE,MAAM;gBACxB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI;YACJ,WAAW;YACX,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,MAAM;SACrC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CAAA"}
@@ -0,0 +1,2 @@
1
+ import { TriggerStrategy } from '@taskmagic/pieces-framework';
2
+ export declare const newVoiceTrigger: import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {}> | import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {}> | import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {}>;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newVoiceTrigger = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../common/auth");
8
+ const client_1 = require("../common/client");
9
+ function fetchAllVoices(apiKey) {
10
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
11
+ var _a, _b;
12
+ const allVoices = [];
13
+ let pageNumber = 0;
14
+ let totalPages = 1;
15
+ do {
16
+ const response = yield (0, client_1.humeApiCall)({
17
+ apiKey,
18
+ method: pieces_common_1.HttpMethod.GET,
19
+ resourceUrl: '/v0/tts/voices',
20
+ queryParams: {
21
+ provider: 'CUSTOM_VOICE',
22
+ page_number: String(pageNumber),
23
+ page_size: '100',
24
+ },
25
+ });
26
+ const voices = (_a = response.voices_page) !== null && _a !== void 0 ? _a : [];
27
+ allVoices.push(...voices);
28
+ totalPages = (_b = response.total_pages) !== null && _b !== void 0 ? _b : 1;
29
+ pageNumber += 1;
30
+ } while (pageNumber < totalPages);
31
+ return allVoices;
32
+ });
33
+ }
34
+ const polling = {
35
+ strategy: pieces_common_1.DedupeStrategy.TIMEBASED,
36
+ items: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
37
+ const allVoices = yield fetchAllVoices(auth);
38
+ return allVoices.map((voice) => ({
39
+ epochMilliSeconds: Date.now(),
40
+ data: {
41
+ id: voice.id,
42
+ name: voice.name,
43
+ provider: voice.provider,
44
+ compatibleOctaveModels: voice.compatible_octave_models,
45
+ },
46
+ }));
47
+ }),
48
+ };
49
+ exports.newVoiceTrigger = (0, pieces_framework_1.createTrigger)({
50
+ auth: auth_1.humeAiAuth,
51
+ name: 'new_voice',
52
+ displayName: 'New Voice',
53
+ description: 'Triggers when a new voice is created in Hume AI',
54
+ props: {},
55
+ type: pieces_framework_1.TriggerStrategy.POLLING,
56
+ sampleData: {
57
+ id: 'voice_123',
58
+ name: 'My Custom Voice',
59
+ provider: 'CUSTOM_VOICE',
60
+ compatibleOctaveModels: ['octave-2'],
61
+ },
62
+ onEnable(context) {
63
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
64
+ yield pieces_common_1.pollingHelper.onEnable(polling, {
65
+ auth: context.auth,
66
+ store: context.store,
67
+ propsValue: context.propsValue,
68
+ });
69
+ });
70
+ },
71
+ onDisable(context) {
72
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
73
+ yield pieces_common_1.pollingHelper.onDisable(polling, {
74
+ auth: context.auth,
75
+ store: context.store,
76
+ propsValue: context.propsValue,
77
+ });
78
+ });
79
+ },
80
+ test(context) {
81
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
82
+ return yield pieces_common_1.pollingHelper.test(polling, {
83
+ auth: context.auth,
84
+ store: context.store,
85
+ propsValue: context.propsValue,
86
+ files: context.files,
87
+ });
88
+ });
89
+ },
90
+ run(context) {
91
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
92
+ return yield pieces_common_1.pollingHelper.poll(polling, {
93
+ auth: context.auth,
94
+ store: context.store,
95
+ propsValue: context.propsValue,
96
+ files: context.files,
97
+ });
98
+ });
99
+ },
100
+ });
101
+ //# sourceMappingURL=new-voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-voice.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hume-ai/src/lib/triggers/new-voice.ts"],"names":[],"mappings":"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"}