@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 +25 -0
- package/package.json +36 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +58 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/extract.d.ts +4 -0
- package/src/lib/actions/extract.js +44 -0
- package/src/lib/actions/extract.js.map +1 -0
- package/src/lib/actions/search.d.ts +14 -0
- package/src/lib/actions/search.js +135 -0
- package/src/lib/actions/search.js.map +1 -0
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
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
|
package/src/index.js.map
ADDED
|
@@ -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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"}
|