@activepieces/piece-tavily 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.
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # Tavily
2
+
3
+ ## Description
4
+ Tavily is an AI-powered search engine designed for accurate and real-time information retrieval. This piece enables integration with Tavily's API to perform searches and extract information.
5
+
6
+ ## Actions
7
+ 1. **Search**: Perform a search query using Tavily's AI search engine
8
+ - Supports both basic and advanced search depths
9
+ - Optional AI-generated answer
10
+ - Configurable result limits
11
+ - Raw content inclusion option
12
+
13
+ 2. **Extract**: Extract structured data from a webpage using Tavily's extraction API
14
+ - Clean and formatted content extraction
15
+ - Supports various content types
16
+ - Removes ads and irrelevant content
17
+
18
+ ## Authentication
19
+ This piece requires an API key from Tavily. To obtain your API key:
20
+ 1. Visit https://tavily.com/ and sign up for an account
21
+ 2. Navigate to your dashboard
22
+ 3. Copy your API key from the dashboard
23
+
24
+ ## Requirements
25
+ - Tavily API Key
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@activepieces/piece-tavily",
3
+ "version": "0.0.1",
4
+ "dependencies": {
5
+ "@anthropic-ai/sdk": "0.33.1",
6
+ "@sinclair/typebox": "0.34.11",
7
+ "axios": "1.7.8",
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.23.8",
16
+ "@activepieces/pieces-common": "0.3.0",
17
+ "@activepieces/pieces-framework": "0.7.42",
18
+ "@activepieces/shared": "0.10.140",
19
+ "tslib": "1.14.1"
20
+ },
21
+ "overrides": {
22
+ "cross-spawn": "7.0.6",
23
+ "@tryfabric/martian": {
24
+ "@notionhq/client": "$@notionhq/client"
25
+ },
26
+ "vite": {
27
+ "rollup": "npm:@rollup/wasm-node"
28
+ }
29
+ },
30
+ "resolutions": {
31
+ "rollup": "npm:@rollup/wasm-node"
32
+ },
33
+ "main": "./src/index.js",
34
+ "type": "commonjs",
35
+ "types": "./src/index.d.ts"
36
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const tavilyAuth: import("@activepieces/pieces-framework").SecretTextProperty<true>;
2
+ export declare const tavily: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").SecretTextProperty<true>>;
package/src/index.js ADDED
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tavily = exports.tavilyAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_common_1 = require("@activepieces/pieces-common");
6
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
7
+ const shared_1 = require("@activepieces/shared");
8
+ const search_1 = require("./lib/actions/search");
9
+ const extract_1 = require("./lib/actions/extract");
10
+ const markdownDescription = `
11
+ Follow these steps to obtain your Tavily API Key:
12
+
13
+ 1. Visit [tavily](https://tavily.com/) and create an account.
14
+ 2. Log in and navigate to your dashboard.
15
+ 3. Locate and copy your API key from the dashboard.
16
+ `;
17
+ exports.tavilyAuth = pieces_framework_1.PieceAuth.SecretText({
18
+ description: markdownDescription,
19
+ displayName: 'API Key',
20
+ required: true,
21
+ validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
22
+ try {
23
+ yield pieces_common_1.httpClient.sendRequest({
24
+ method: pieces_common_1.HttpMethod.POST,
25
+ url: 'https://api.tavily.com/search',
26
+ headers: {
27
+ 'Content-Type': 'application/json',
28
+ },
29
+ body: {
30
+ api_key: auth,
31
+ query: 'test',
32
+ search_depth: 'basic',
33
+ },
34
+ });
35
+ return {
36
+ valid: true,
37
+ };
38
+ }
39
+ catch (e) {
40
+ return {
41
+ valid: false,
42
+ error: 'Invalid API Key',
43
+ };
44
+ }
45
+ }),
46
+ });
47
+ exports.tavily = (0, pieces_framework_1.createPiece)({
48
+ displayName: 'Tavily',
49
+ description: 'Search engine tailored for AI agents.',
50
+ minimumSupportedRelease: '0.30.0',
51
+ logoUrl: 'https://cdn.activepieces.com/pieces/tavily.jpg',
52
+ categories: [shared_1.PieceCategory.ARTIFICIAL_INTELLIGENCE],
53
+ authors: ['OsamaHaikal'],
54
+ auth: exports.tavilyAuth,
55
+ actions: [search_1.searchAction, extract_1.extractAction],
56
+ triggers: [],
57
+ });
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/tavily/src/index.ts"],"names":[],"mappings":";;;;AAAA,+DAAqE;AACrE,qEAAwE;AACxE,iDAAqD;AACrD,iDAAoD;AACpD,mDAAsD;AAEtD,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEW,QAAA,UAAU,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC9C,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACxB,IAAI,CAAC;YACJ,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5B,MAAM,EAAE,0BAAU,CAAC,IAAI;gBACvB,GAAG,EAAE,+BAA+B;gBACpC,OAAO,EAAE;oBACR,cAAc,EAAE,kBAAkB;iBAClC;gBACD,IAAI,EAAE;oBACL,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,MAAM;oBACb,YAAY,EAAE,OAAO;iBACrB;aACD,CAAC,CAAC;YACH,OAAO;gBACN,KAAK,EAAE,IAAI;aACX,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,iBAAiB;aACxB,CAAC;QACH,CAAC;IACF,CAAC,CAAA;CACD,CAAC,CAAC;AAEU,QAAA,MAAM,GAAG,IAAA,8BAAW,EAAC;IACjC,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,uCAAuC;IACpD,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,gDAAgD;IACzD,UAAU,EAAE,CAAC,sBAAa,CAAC,uBAAuB,CAAC;IACnD,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,IAAI,EAAE,kBAAU;IAChB,OAAO,EAAE,CAAC,qBAAY,EAAE,uBAAa,CAAC;IACtC,QAAQ,EAAE,EAAE;CACZ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const extractAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").SecretTextProperty<true>, {
2
+ urls: import("@activepieces/pieces-framework").ArrayProperty<true>;
3
+ include_images: import("@activepieces/pieces-framework").CheckboxProperty<false>;
4
+ }>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const index_1 = require("../../index");
8
+ exports.extractAction = (0, pieces_framework_1.createAction)({
9
+ name: 'extract',
10
+ displayName: 'Extract Content',
11
+ description: 'Retrieve raw web content from specified URLs.',
12
+ auth: index_1.tavilyAuth,
13
+ props: {
14
+ urls: pieces_framework_1.Property.Array({
15
+ displayName: 'URLs',
16
+ description: 'The URLs you want to extract with Tavily.',
17
+ required: true,
18
+ }),
19
+ include_images: pieces_framework_1.Property.Checkbox({
20
+ displayName: 'Include Images',
21
+ description: 'Include a list of images extracted from the URLs in the response.',
22
+ required: false,
23
+ defaultValue: false,
24
+ }),
25
+ },
26
+ run(_a) {
27
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, propsValue }) {
28
+ const response = yield pieces_common_1.httpClient.sendRequest({
29
+ method: pieces_common_1.HttpMethod.POST,
30
+ url: 'https://api.tavily.com/extract',
31
+ headers: {
32
+ 'Content-Type': 'application/json',
33
+ },
34
+ body: {
35
+ api_key: auth,
36
+ urls: propsValue.urls,
37
+ include_images: propsValue.include_images,
38
+ },
39
+ });
40
+ return response.body;
41
+ });
42
+ },
43
+ });
44
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tavily/src/lib/actions/extract.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,uCAAyC;AAE5B,QAAA,aAAa,GAAG,IAAA,+BAAY,EAAC;IACxC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,+CAA+C;IAC5D,IAAI,EAAE,kBAAU;IAChB,KAAK,EAAE;QACL,IAAI,EAAE,2BAAQ,CAAC,KAAK,CAAC;YACnB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,cAAc,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAChC,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,mEAAmE;YAChF,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;SACpB,CAAC;KACH;IACK,GAAG;qEAAC,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM,EAAE,0BAAU,CAAC,IAAI;gBACvB,GAAG,EAAE,gCAAgC;gBACrC,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,cAAc,EAAE,UAAU,CAAC,cAAc;iBAC1C;aACF,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare const searchAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").SecretTextProperty<true>, {
2
+ query: import("@activepieces/pieces-framework").LongTextProperty<true>;
3
+ search_depth: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
4
+ topic: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
5
+ days: import("@activepieces/pieces-framework").NumberProperty<false>;
6
+ time_range: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
7
+ max_results: import("@activepieces/pieces-framework").NumberProperty<false>;
8
+ include_images: import("@activepieces/pieces-framework").CheckboxProperty<false>;
9
+ include_image_descriptions: import("@activepieces/pieces-framework").CheckboxProperty<false>;
10
+ include_answer: import("@activepieces/pieces-framework").CheckboxProperty<false>;
11
+ include_raw_content: import("@activepieces/pieces-framework").CheckboxProperty<false>;
12
+ include_domains: import("@activepieces/pieces-framework").ArrayProperty<false>;
13
+ exclude_domains: import("@activepieces/pieces-framework").ArrayProperty<false>;
14
+ }>;
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const index_1 = require("../../index");
8
+ exports.searchAction = (0, pieces_framework_1.createAction)({
9
+ name: 'search',
10
+ displayName: 'Search',
11
+ description: 'Search for data based on a query.',
12
+ auth: index_1.tavilyAuth,
13
+ props: {
14
+ query: pieces_framework_1.Property.LongText({
15
+ displayName: 'Search Query',
16
+ description: 'The search query you want to execute with Tavily.',
17
+ required: true,
18
+ }),
19
+ search_depth: pieces_framework_1.Property.StaticDropdown({
20
+ displayName: 'Search Depth',
21
+ description: 'The depth of the search. It can be "basic" or "advanced".',
22
+ required: false,
23
+ defaultValue: 'basic',
24
+ options: {
25
+ options: [
26
+ { label: 'Basic', value: 'basic' },
27
+ { label: 'Advanced', value: 'advanced' },
28
+ ],
29
+ },
30
+ }),
31
+ topic: pieces_framework_1.Property.StaticDropdown({
32
+ displayName: 'Topic',
33
+ description: 'The category of the search. This will determine which of our agents will be used for the search.',
34
+ required: false,
35
+ defaultValue: 'general',
36
+ options: {
37
+ options: [
38
+ { label: 'General', value: 'general' },
39
+ { label: 'News', value: 'news' },
40
+ ],
41
+ },
42
+ }),
43
+ days: pieces_framework_1.Property.Number({
44
+ displayName: 'Days',
45
+ description: 'The number of days back from the current date to include in the search results. Only available when using the "news" search topic. Default is 3.',
46
+ required: false,
47
+ defaultValue: 3,
48
+ }),
49
+ time_range: pieces_framework_1.Property.StaticDropdown({
50
+ displayName: 'Time Range',
51
+ description: 'The time range back from the current date to include in the search results.',
52
+ required: false,
53
+ options: {
54
+ options: [
55
+ { label: 'Day', value: 'day' },
56
+ { label: 'Week', value: 'week' },
57
+ { label: 'Month', value: 'month' },
58
+ { label: 'Year', value: 'year' },
59
+ { label: 'Day (Short)', value: 'd' },
60
+ { label: 'Week (Short)', value: 'w' },
61
+ { label: 'Month (Short)', value: 'm' },
62
+ { label: 'Year (Short)', value: 'y' },
63
+ ],
64
+ },
65
+ }),
66
+ max_results: pieces_framework_1.Property.Number({
67
+ displayName: 'Maximum Results',
68
+ description: 'The maximum number of search results to return.',
69
+ required: false,
70
+ defaultValue: 5,
71
+ }),
72
+ include_images: pieces_framework_1.Property.Checkbox({
73
+ displayName: 'Include Images',
74
+ description: 'Include a list of query-related images in the response.',
75
+ required: false,
76
+ defaultValue: false,
77
+ }),
78
+ include_image_descriptions: pieces_framework_1.Property.Checkbox({
79
+ displayName: 'Include Image Descriptions',
80
+ description: 'When include_images is set to True, this option adds descriptive text for each image.',
81
+ required: false,
82
+ defaultValue: false,
83
+ }),
84
+ include_answer: pieces_framework_1.Property.Checkbox({
85
+ displayName: 'Include Answer',
86
+ description: 'Include a short answer to original query, generated by an LLM based on Tavily\'s search results.',
87
+ required: false,
88
+ defaultValue: false,
89
+ }),
90
+ include_raw_content: pieces_framework_1.Property.Checkbox({
91
+ displayName: 'Include Raw Content',
92
+ description: 'Include the cleaned and parsed HTML content of each search result.',
93
+ required: false,
94
+ defaultValue: false,
95
+ }),
96
+ include_domains: pieces_framework_1.Property.Array({
97
+ displayName: 'Include Domains',
98
+ description: 'A list of domains to specifically include in the search results.',
99
+ required: false,
100
+ }),
101
+ exclude_domains: pieces_framework_1.Property.Array({
102
+ displayName: 'Exclude Domains',
103
+ description: 'A list of domains to specifically exclude from the search results.',
104
+ required: false,
105
+ }),
106
+ },
107
+ run(_a) {
108
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, propsValue }) {
109
+ const response = yield pieces_common_1.httpClient.sendRequest({
110
+ method: pieces_common_1.HttpMethod.POST,
111
+ url: 'https://api.tavily.com/search',
112
+ headers: {
113
+ 'Content-Type': 'application/json',
114
+ },
115
+ body: {
116
+ api_key: auth,
117
+ query: propsValue.query,
118
+ search_depth: propsValue.search_depth,
119
+ topic: propsValue.topic,
120
+ days: propsValue.days,
121
+ time_range: propsValue.time_range,
122
+ max_results: propsValue.max_results,
123
+ include_images: propsValue.include_images,
124
+ include_image_descriptions: propsValue.include_image_descriptions,
125
+ include_answer: propsValue.include_answer,
126
+ include_raw_content: propsValue.include_raw_content,
127
+ include_domains: propsValue.include_domains,
128
+ exclude_domains: propsValue.exclude_domains,
129
+ },
130
+ });
131
+ return response.body;
132
+ });
133
+ },
134
+ });
135
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tavily/src/lib/actions/search.ts"],"names":[],"mappings":"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"}