@activepieces/pieces-common 0.2.15 → 0.2.16
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/package.json +9 -7
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/ai/index.d.ts +72 -0
- package/src/lib/ai/index.js +54 -0
- package/src/lib/ai/index.js.map +1 -0
- package/src/lib/ai/providers/anthropic/index.d.ts +2 -0
- package/src/lib/ai/providers/anthropic/index.js +110 -0
- package/src/lib/ai/providers/anthropic/index.js.map +1 -0
- package/src/lib/ai/providers/index.d.ts +32 -0
- package/src/lib/ai/providers/index.js +110 -0
- package/src/lib/ai/providers/index.js.map +1 -0
- package/src/lib/ai/providers/openai/index.d.ts +2 -0
- package/src/lib/ai/providers/openai/index.js +108 -0
- package/src/lib/ai/providers/openai/index.js.map +1 -0
- package/src/lib/ai/providers/utils.d.ts +14 -0
- package/src/lib/ai/providers/utils.js +16 -0
- package/src/lib/ai/providers/utils.js.map +1 -0
- package/src/lib/http/axios/axios-http-client.js +1 -1
- package/src/lib/http/axios/axios-http-client.js.map +1 -1
- package/src/lib/http/core/base-http-client.js +1 -2
- package/src/lib/http/core/base-http-client.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activepieces/pieces-common",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.16",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@
|
|
7
|
-
"
|
|
6
|
+
"@anthropic-ai/sdk": "0.27.3",
|
|
7
|
+
"@sinclair/typebox": "0.32.35",
|
|
8
|
+
"axios": "1.7.4",
|
|
8
9
|
"dayjs": "1.11.9",
|
|
9
|
-
"
|
|
10
|
+
"deepmerge": "4.3.1",
|
|
10
11
|
"nanoid": "3.3.6",
|
|
12
|
+
"openai": "4.47.1",
|
|
11
13
|
"semver": "7.6.0",
|
|
12
|
-
"@activepieces/pieces-framework": "0.7.
|
|
13
|
-
"@activepieces/shared": "0.10.
|
|
14
|
-
"tslib": "
|
|
14
|
+
"@activepieces/pieces-framework": "0.7.34",
|
|
15
|
+
"@activepieces/shared": "0.10.116",
|
|
16
|
+
"tslib": "2.6.2"
|
|
15
17
|
},
|
|
16
18
|
"main": "./src/index.js"
|
|
17
19
|
}
|
package/src/index.d.ts
CHANGED
package/src/index.js
CHANGED
|
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./lib/authentication"), exports);
|
|
|
5
5
|
tslib_1.__exportStar(require("./lib/helpers"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./lib/http"), exports);
|
|
7
7
|
tslib_1.__exportStar(require("./lib/polling"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./lib/ai"), exports);
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/common/src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,wDAA8B;AAC9B,qDAA2B;AAC3B,wDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/common/src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,wDAA8B;AAC9B,qDAA2B;AAC3B,wDAA8B;AAC9B,mDAAyB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ServerContext } from '@activepieces/pieces-framework';
|
|
2
|
+
import { AiProvider } from './providers';
|
|
3
|
+
export type AI<SDK> = {
|
|
4
|
+
provider: string;
|
|
5
|
+
chat: AIChat;
|
|
6
|
+
};
|
|
7
|
+
export type AIChat = {
|
|
8
|
+
text: (params: AIChatCompletionsCreateParams) => Promise<AIChatCompletion>;
|
|
9
|
+
extractStructuredData: (params: AIExtractStructuredDataParams) => Promise<AIExtractStructuredDataResponse>;
|
|
10
|
+
};
|
|
11
|
+
export type AIChatCompletionsCreateParams = {
|
|
12
|
+
model: string;
|
|
13
|
+
messages: AIChatMessage[];
|
|
14
|
+
creativity?: number;
|
|
15
|
+
maxTokens?: number;
|
|
16
|
+
stop?: string[];
|
|
17
|
+
};
|
|
18
|
+
export type AIChatCompletion = {
|
|
19
|
+
id: string;
|
|
20
|
+
created: number;
|
|
21
|
+
model: string;
|
|
22
|
+
choices: AIChatMessage[];
|
|
23
|
+
usage?: AIChatCompletionUsage;
|
|
24
|
+
};
|
|
25
|
+
export type AIChatCompletionUsage = {
|
|
26
|
+
promptTokens: number;
|
|
27
|
+
completionTokens: number;
|
|
28
|
+
totalTokens: number;
|
|
29
|
+
};
|
|
30
|
+
export type AIChatCompletionMessageToolCall = {
|
|
31
|
+
id: string;
|
|
32
|
+
type: string;
|
|
33
|
+
function: {
|
|
34
|
+
name: string;
|
|
35
|
+
arguments: unknown;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export type AIChatMessage = {
|
|
39
|
+
role: AIChatRole;
|
|
40
|
+
content: string;
|
|
41
|
+
};
|
|
42
|
+
export type AIFunctionCallingPropDefinition = {
|
|
43
|
+
name: string;
|
|
44
|
+
type: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
isRequired: boolean;
|
|
47
|
+
};
|
|
48
|
+
export type AIExtractStructuredDataParams = AIChatCompletionsCreateParams & {
|
|
49
|
+
functionCallingProps: AIFunctionCallingPropDefinition[];
|
|
50
|
+
};
|
|
51
|
+
export type AIExtractStructuredDataResponse = {
|
|
52
|
+
id: string;
|
|
53
|
+
created: number;
|
|
54
|
+
model: string;
|
|
55
|
+
choices: AIChatMessage[];
|
|
56
|
+
toolCall: AIChatCompletionMessageToolCall;
|
|
57
|
+
usage?: AIChatCompletionUsage;
|
|
58
|
+
};
|
|
59
|
+
export declare enum AIChatRole {
|
|
60
|
+
SYSTEM = "system",
|
|
61
|
+
USER = "user",
|
|
62
|
+
ASSISTANT = "assistant"
|
|
63
|
+
}
|
|
64
|
+
export type AIFactory = (params: {
|
|
65
|
+
proxyUrl: string;
|
|
66
|
+
engineToken: string;
|
|
67
|
+
}) => AI<unknown>;
|
|
68
|
+
export declare const AI: ({ provider, server, }: {
|
|
69
|
+
provider: AiProvider;
|
|
70
|
+
server: ServerContext;
|
|
71
|
+
}) => AI<unknown>;
|
|
72
|
+
export * from './providers';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AI = exports.AIChatRole = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const providers_1 = require("./providers");
|
|
6
|
+
var AIChatRole;
|
|
7
|
+
(function (AIChatRole) {
|
|
8
|
+
AIChatRole["SYSTEM"] = "system";
|
|
9
|
+
AIChatRole["USER"] = "user";
|
|
10
|
+
AIChatRole["ASSISTANT"] = "assistant";
|
|
11
|
+
})(AIChatRole || (exports.AIChatRole = AIChatRole = {}));
|
|
12
|
+
const AI = ({ provider, server, }) => {
|
|
13
|
+
var _a;
|
|
14
|
+
const proxyUrl = `${server.apiUrl}v1/ai-providers/proxy/${provider}`;
|
|
15
|
+
const factory = (_a = providers_1.AI_PROVIDERS.find((p) => p.value === provider)) === null || _a === void 0 ? void 0 : _a.factory;
|
|
16
|
+
const impl = factory === null || factory === void 0 ? void 0 : factory({ proxyUrl, engineToken: server.token });
|
|
17
|
+
if (!impl) {
|
|
18
|
+
throw new Error(`AI provider ${provider} is not registered`);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
provider,
|
|
22
|
+
chat: {
|
|
23
|
+
text: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
var _b;
|
|
25
|
+
try {
|
|
26
|
+
const response = yield impl.chat.text(params);
|
|
27
|
+
return response;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
if ((_b = e === null || e === void 0 ? void 0 : e.error) === null || _b === void 0 ? void 0 : _b.error) {
|
|
31
|
+
throw e.error.error;
|
|
32
|
+
}
|
|
33
|
+
throw e;
|
|
34
|
+
}
|
|
35
|
+
}),
|
|
36
|
+
extractStructuredData: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
var _c;
|
|
38
|
+
try {
|
|
39
|
+
const response = yield impl.chat.extractStructuredData(params);
|
|
40
|
+
return response;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
if ((_c = e === null || e === void 0 ? void 0 : e.error) === null || _c === void 0 ? void 0 : _c.error) {
|
|
44
|
+
throw e.error.error;
|
|
45
|
+
}
|
|
46
|
+
throw e;
|
|
47
|
+
}
|
|
48
|
+
}),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.AI = AI;
|
|
53
|
+
tslib_1.__exportStar(require("./providers"), exports);
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/common/src/lib/ai/index.ts"],"names":[],"mappings":";;;;AACA,2CAAuD;AAsEvD,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,qCAAuB,CAAA;AACzB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAOM,MAAM,EAAE,GAAG,CAAC,EACjB,QAAQ,EACR,MAAM,GAIP,EAAe,EAAE;;IAChB,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,MAAM,yBAAyB,QAAQ,EAAE,CAAC;IACrE,MAAM,OAAO,GAAG,MAAA,wBAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,0CAAE,OAAO,CAAC;IACxE,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,QAAQ;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,CAAO,MAAM,EAAE,EAAE;;gBACrB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9C,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,0CAAE,KAAK,EAAE,CAAC;wBACpB,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;oBACtB,CAAC;oBACD,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC,CAAA;YACD,qBAAqB,EAAE,CAAO,MAAM,EAAE,EAAE;;gBACtC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;oBAC/D,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,0CAAE,KAAK,EAAE,CAAC;wBACpB,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;oBACtB,CAAC;oBACD,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC,CAAA;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,EAAE,MA0Cb;AAEF,sDAA4B"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.anthropic = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const __1 = require("../..");
|
|
6
|
+
const sdk_1 = tslib_1.__importDefault(require("@anthropic-ai/sdk"));
|
|
7
|
+
const anthropic = ({ proxyUrl, engineToken, }) => {
|
|
8
|
+
const sdk = new sdk_1.default({
|
|
9
|
+
apiKey: engineToken,
|
|
10
|
+
baseURL: proxyUrl,
|
|
11
|
+
defaultHeaders: {
|
|
12
|
+
'X-AP-TOTAL-USAGE-BODY-PATH': 'usage.output_tokens+usage.input_tokens',
|
|
13
|
+
Authorization: `Bearer ${engineToken}`,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
return {
|
|
17
|
+
provider: 'ANTHROPIC',
|
|
18
|
+
chat: {
|
|
19
|
+
text: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
const concatenatedSystemMessage = params.messages
|
|
22
|
+
.filter((message) => message.role === 'system')
|
|
23
|
+
.map((message) => message.content)
|
|
24
|
+
.join('\n');
|
|
25
|
+
const completion = yield sdk.messages.create({
|
|
26
|
+
model: params.model,
|
|
27
|
+
messages: params.messages.map((message) => ({
|
|
28
|
+
role: message.role === 'user' ? 'user' : 'assistant',
|
|
29
|
+
content: message.content,
|
|
30
|
+
})),
|
|
31
|
+
temperature: Math.tanh((_a = params.creativity) !== null && _a !== void 0 ? _a : 100),
|
|
32
|
+
stop_sequences: params.stop,
|
|
33
|
+
system: concatenatedSystemMessage,
|
|
34
|
+
stream: false,
|
|
35
|
+
max_tokens: (_b = params.maxTokens) !== null && _b !== void 0 ? _b : 2000,
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
choices: completion.content
|
|
39
|
+
.filter((choice) => choice.type === 'text')
|
|
40
|
+
.map((choice) => ({
|
|
41
|
+
content: choice.text,
|
|
42
|
+
role: __1.AIChatRole.ASSISTANT,
|
|
43
|
+
})),
|
|
44
|
+
created: new Date().getTime(),
|
|
45
|
+
id: completion.id,
|
|
46
|
+
model: completion.model,
|
|
47
|
+
usage: {
|
|
48
|
+
completionTokens: completion.usage.output_tokens,
|
|
49
|
+
promptTokens: completion.usage.input_tokens,
|
|
50
|
+
totalTokens: completion.usage.output_tokens + completion.usage.input_tokens,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}),
|
|
54
|
+
extractStructuredData: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
var _c, _d;
|
|
56
|
+
const completion = yield sdk.messages.create({
|
|
57
|
+
model: params.model,
|
|
58
|
+
messages: params.messages.map((message) => ({
|
|
59
|
+
role: message.role === 'user' ? 'user' : 'assistant',
|
|
60
|
+
content: message.content,
|
|
61
|
+
})),
|
|
62
|
+
max_tokens: (_c = params.maxTokens) !== null && _c !== void 0 ? _c : 2000,
|
|
63
|
+
tools: [
|
|
64
|
+
{
|
|
65
|
+
name: 'extract_structured_data',
|
|
66
|
+
description: 'Extract the following data from the provided text.',
|
|
67
|
+
input_schema: {
|
|
68
|
+
type: 'object',
|
|
69
|
+
properties: params.functionCallingProps.reduce((acc, { name, type, description }) => {
|
|
70
|
+
acc[name] = { type, description };
|
|
71
|
+
return acc;
|
|
72
|
+
}, {}),
|
|
73
|
+
required: params.functionCallingProps
|
|
74
|
+
.filter((prop) => prop.isRequired)
|
|
75
|
+
.map((prop) => prop.name),
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
const toolCallsResponse = completion.content.filter((choice) => choice.type === 'tool_use');
|
|
81
|
+
return {
|
|
82
|
+
choices: completion.content
|
|
83
|
+
.filter((choice) => choice.type === 'text')
|
|
84
|
+
.map((choice) => ({
|
|
85
|
+
content: choice.text,
|
|
86
|
+
role: __1.AIChatRole.ASSISTANT,
|
|
87
|
+
})),
|
|
88
|
+
toolCall: {
|
|
89
|
+
id: toolCallsResponse[0].id,
|
|
90
|
+
type: 'function',
|
|
91
|
+
function: {
|
|
92
|
+
name: (_d = toolCallsResponse[0].name) !== null && _d !== void 0 ? _d : 'extract_structured_data',
|
|
93
|
+
arguments: toolCallsResponse[0].input,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
id: completion.id,
|
|
97
|
+
model: completion.model,
|
|
98
|
+
created: new Date().getTime(),
|
|
99
|
+
usage: {
|
|
100
|
+
completionTokens: completion.usage.output_tokens,
|
|
101
|
+
promptTokens: completion.usage.input_tokens,
|
|
102
|
+
totalTokens: completion.usage.output_tokens + completion.usage.input_tokens,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}),
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
exports.anthropic = anthropic;
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../packages/pieces/community/common/src/lib/ai/providers/anthropic/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Static } from "@sinclair/typebox";
|
|
2
|
+
export declare const AI_PROVIDERS: ({
|
|
3
|
+
logoUrl: string;
|
|
4
|
+
defaultBaseUrl: string;
|
|
5
|
+
label: "OpenAI";
|
|
6
|
+
value: "openai";
|
|
7
|
+
models: {
|
|
8
|
+
label: string;
|
|
9
|
+
value: string;
|
|
10
|
+
}[];
|
|
11
|
+
auth: import("./utils").AuthHeader;
|
|
12
|
+
factory: import("..").AIFactory;
|
|
13
|
+
} | {
|
|
14
|
+
logoUrl: string;
|
|
15
|
+
defaultBaseUrl: string;
|
|
16
|
+
label: "Anthropic";
|
|
17
|
+
value: "anthropic";
|
|
18
|
+
models: {
|
|
19
|
+
label: string;
|
|
20
|
+
value: string;
|
|
21
|
+
}[];
|
|
22
|
+
auth: import("./utils").AuthHeader;
|
|
23
|
+
factory: import("..").AIFactory;
|
|
24
|
+
})[];
|
|
25
|
+
export declare const aiProps: {
|
|
26
|
+
provider: import("@activepieces/pieces-framework").DropdownProperty<"openai" | "anthropic", true>;
|
|
27
|
+
model: import("@activepieces/pieces-framework").DropdownProperty<string, true>;
|
|
28
|
+
};
|
|
29
|
+
export type AiProviderMetadata = typeof AI_PROVIDERS[number];
|
|
30
|
+
export declare const AiProvider: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"openai" | "anthropic">[]>;
|
|
31
|
+
export type AiProvider = Static<typeof AiProvider>;
|
|
32
|
+
export * from './utils';
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AiProvider = exports.aiProps = exports.AI_PROVIDERS = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typebox_1 = require("@sinclair/typebox");
|
|
6
|
+
const anthropic_1 = require("./anthropic");
|
|
7
|
+
const openai_1 = require("./openai");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
10
|
+
const shared_1 = require("@activepieces/shared");
|
|
11
|
+
const http_1 = require("../../http");
|
|
12
|
+
exports.AI_PROVIDERS = [
|
|
13
|
+
{
|
|
14
|
+
logoUrl: 'https://cdn.activepieces.com/pieces/openai.png',
|
|
15
|
+
defaultBaseUrl: 'https://api.openai.com',
|
|
16
|
+
label: 'OpenAI',
|
|
17
|
+
value: 'openai',
|
|
18
|
+
models: [
|
|
19
|
+
{ label: 'gpt-4o', value: 'gpt-4o' },
|
|
20
|
+
{ label: 'gpt-4o-mini', value: 'gpt-4o-mini' },
|
|
21
|
+
{ label: 'gpt-4-turbo', value: 'gpt-4-turbo' },
|
|
22
|
+
{ label: 'gpt-3.5-turbo', value: 'gpt-3.5-turbo' },
|
|
23
|
+
],
|
|
24
|
+
auth: (0, utils_1.authHeader)({ bearer: true }),
|
|
25
|
+
factory: openai_1.openai,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
logoUrl: 'https://cdn.activepieces.com/pieces/claude.png',
|
|
29
|
+
defaultBaseUrl: 'https://api.anthropic.com',
|
|
30
|
+
label: 'Anthropic',
|
|
31
|
+
value: 'anthropic',
|
|
32
|
+
models: [
|
|
33
|
+
{
|
|
34
|
+
label: 'claude-3-5-sonnet',
|
|
35
|
+
value: 'claude-3-5-sonnet-20240620'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: 'claude-3-opus',
|
|
39
|
+
value: 'claude-3-opus-20240229',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: 'claude-3-sonnet',
|
|
43
|
+
value: 'claude-3-sonnet-20240229',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
label: 'claude-3-haiku',
|
|
47
|
+
value: 'claude-3-haiku-20240307',
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
auth: (0, utils_1.authHeader)({ name: "x-api-key", bearer: false }),
|
|
51
|
+
factory: anthropic_1.anthropic,
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
exports.aiProps = {
|
|
55
|
+
provider: pieces_framework_1.Property.Dropdown({
|
|
56
|
+
displayName: 'Provider',
|
|
57
|
+
required: true,
|
|
58
|
+
refreshers: [],
|
|
59
|
+
options: (_, ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
+
const providers = yield http_1.httpClient.sendRequest({
|
|
61
|
+
method: http_1.HttpMethod.GET,
|
|
62
|
+
url: `${ctx.server.apiUrl}v1/ai-providers`,
|
|
63
|
+
headers: {
|
|
64
|
+
Authorization: `Bearer ${ctx.server.token}`,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
if (providers.body.data.length === 0) {
|
|
68
|
+
return {
|
|
69
|
+
disabled: true,
|
|
70
|
+
options: [],
|
|
71
|
+
placeholder: 'No AI providers configured by the admin.',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
placeholder: 'Select AI Provider',
|
|
76
|
+
disabled: false,
|
|
77
|
+
options: providers.body.data.map((p) => {
|
|
78
|
+
var _a, _b;
|
|
79
|
+
return ({
|
|
80
|
+
label: (_b = (_a = exports.AI_PROVIDERS.find((f) => f.value === p.provider)) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : 'Unknown Label',
|
|
81
|
+
value: p.provider,
|
|
82
|
+
});
|
|
83
|
+
}),
|
|
84
|
+
};
|
|
85
|
+
})
|
|
86
|
+
}),
|
|
87
|
+
model: pieces_framework_1.Property.Dropdown({
|
|
88
|
+
displayName: 'Model',
|
|
89
|
+
required: true,
|
|
90
|
+
refreshers: ['provider'],
|
|
91
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ provider }) {
|
|
92
|
+
var _b;
|
|
93
|
+
if ((0, shared_1.isNil)(provider)) {
|
|
94
|
+
return {
|
|
95
|
+
disabled: true,
|
|
96
|
+
options: [],
|
|
97
|
+
placeholder: 'Select AI Provider',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const models = (_b = exports.AI_PROVIDERS.find((p) => p.value === provider)) === null || _b === void 0 ? void 0 : _b.models;
|
|
101
|
+
return {
|
|
102
|
+
disabled: (0, shared_1.isNil)(models),
|
|
103
|
+
options: models !== null && models !== void 0 ? models : [],
|
|
104
|
+
};
|
|
105
|
+
}),
|
|
106
|
+
}),
|
|
107
|
+
};
|
|
108
|
+
exports.AiProvider = typebox_1.Type.Union(exports.AI_PROVIDERS.map(p => typebox_1.Type.Literal(p.value)));
|
|
109
|
+
tslib_1.__exportStar(require("./utils"), exports);
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../packages/pieces/community/common/src/lib/ai/providers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.openai = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const openai_1 = tslib_1.__importDefault(require("openai"));
|
|
6
|
+
const __1 = require("../..");
|
|
7
|
+
const openai = ({ proxyUrl, engineToken }) => {
|
|
8
|
+
const openaiApiVersion = 'v1';
|
|
9
|
+
const sdk = new openai_1.default({
|
|
10
|
+
apiKey: engineToken,
|
|
11
|
+
baseURL: `${proxyUrl}/${openaiApiVersion}`,
|
|
12
|
+
defaultHeaders: {
|
|
13
|
+
'X-AP-TOTAL-USAGE-BODY-PATH': 'usage.total_tokens',
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
return {
|
|
17
|
+
provider: 'OPENAI',
|
|
18
|
+
chat: {
|
|
19
|
+
text: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
var _a;
|
|
21
|
+
const completion = yield sdk.chat.completions.create({
|
|
22
|
+
model: params.model,
|
|
23
|
+
messages: params.messages.map((message) => ({
|
|
24
|
+
role: message.role === 'user' ? 'user' : 'assistant',
|
|
25
|
+
content: message.content,
|
|
26
|
+
})),
|
|
27
|
+
temperature: Math.tanh((_a = params.creativity) !== null && _a !== void 0 ? _a : 100),
|
|
28
|
+
max_tokens: params.maxTokens,
|
|
29
|
+
stop: params.stop,
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
choices: completion.choices.map((choice) => {
|
|
33
|
+
var _a;
|
|
34
|
+
return ({
|
|
35
|
+
role: __1.AIChatRole.ASSISTANT,
|
|
36
|
+
content: (_a = choice.message.content) !== null && _a !== void 0 ? _a : '',
|
|
37
|
+
});
|
|
38
|
+
}),
|
|
39
|
+
created: completion.created,
|
|
40
|
+
id: completion.id,
|
|
41
|
+
model: completion.model,
|
|
42
|
+
usage: completion.usage && {
|
|
43
|
+
completionTokens: completion.usage.completion_tokens,
|
|
44
|
+
promptTokens: completion.usage.prompt_tokens,
|
|
45
|
+
totalTokens: completion.usage.total_tokens,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}),
|
|
49
|
+
extractStructuredData: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
+
var _b, _c, _d, _e, _f;
|
|
51
|
+
const completion = yield sdk.chat.completions.create({
|
|
52
|
+
model: params.model,
|
|
53
|
+
messages: params.messages.map((message) => ({
|
|
54
|
+
role: message.role === 'user' ? 'user' : 'assistant',
|
|
55
|
+
content: message.content,
|
|
56
|
+
})),
|
|
57
|
+
max_tokens: params.maxTokens,
|
|
58
|
+
tools: [
|
|
59
|
+
{
|
|
60
|
+
type: 'function',
|
|
61
|
+
function: {
|
|
62
|
+
name: 'extract_structured_data',
|
|
63
|
+
description: 'Extract the following data from the provided text.',
|
|
64
|
+
parameters: {
|
|
65
|
+
type: 'object',
|
|
66
|
+
properties: params.functionCallingProps.reduce((acc, { name, type, description }) => {
|
|
67
|
+
acc[name] = { type, description };
|
|
68
|
+
return acc;
|
|
69
|
+
}, {}),
|
|
70
|
+
required: params.functionCallingProps
|
|
71
|
+
.filter((prop) => prop.isRequired)
|
|
72
|
+
.map((prop) => prop.name),
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
choices: completion.choices.map((choice) => {
|
|
80
|
+
var _a;
|
|
81
|
+
return ({
|
|
82
|
+
role: __1.AIChatRole.ASSISTANT,
|
|
83
|
+
content: (_a = choice.message.content) !== null && _a !== void 0 ? _a : '',
|
|
84
|
+
});
|
|
85
|
+
}),
|
|
86
|
+
toolCall: {
|
|
87
|
+
id: (_c = (_b = completion.choices[0].message.tool_calls) === null || _b === void 0 ? void 0 : _b[0].id) !== null && _c !== void 0 ? _c : '',
|
|
88
|
+
type: 'function',
|
|
89
|
+
function: {
|
|
90
|
+
name: (_e = (_d = completion.choices[0].message.tool_calls) === null || _d === void 0 ? void 0 : _d[0].function.name) !== null && _e !== void 0 ? _e : 'extract_structured_data',
|
|
91
|
+
arguments: JSON.parse((_f = completion.choices[0].message.tool_calls) === null || _f === void 0 ? void 0 : _f[0].function.arguments),
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
created: completion.created,
|
|
95
|
+
id: completion.id,
|
|
96
|
+
model: completion.model,
|
|
97
|
+
usage: completion.usage && {
|
|
98
|
+
completionTokens: completion.usage.completion_tokens,
|
|
99
|
+
promptTokens: completion.usage.prompt_tokens,
|
|
100
|
+
totalTokens: completion.usage.total_tokens,
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}),
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
exports.openai = openai;
|
|
108
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../packages/pieces/community/common/src/lib/ai/providers/openai/index.ts"],"names":[],"mappings":";;;;AAAA,4DAA4B;AAC5B,6BAAkD;AAE3C,MAAM,MAAM,GAAc,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAc,EAAE;IACzE,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,gBAAM,CAAC;QACrB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,GAAG,QAAQ,IAAI,gBAAgB,EAAE;QAC1C,cAAc,EAAE;YACd,4BAA4B,EAAE,oBAAoB;SACnD;KACF,CAAC,CAAC;IACH,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE;YACJ,IAAI,EAAE,CAAO,MAAM,EAAE,EAAE;;gBACrB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACnD,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBAC1C,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;wBACpD,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAC;oBACH,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,GAAG,CAAC;oBAChD,UAAU,EAAE,MAAM,CAAC,SAAS;oBAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;wBAAC,OAAA,CAAC;4BAC3C,IAAI,EAAE,cAAU,CAAC,SAAS;4BAC1B,OAAO,EAAE,MAAA,MAAM,CAAC,OAAO,CAAC,OAAO,mCAAI,EAAE;yBACtC,CAAC,CAAA;qBAAA,CAAC;oBACH,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,EAAE,EAAE,UAAU,CAAC,EAAE;oBACjB,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI;wBACzB,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB;wBACpD,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa;wBAC5C,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;qBAC3C;iBACF,CAAC;YACJ,CAAC,CAAA;YACD,qBAAqB,EAAE,CAAO,MAAM,EAAE,EAAE;;gBACtC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACnD,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBAC1C,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;wBACpD,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAC;oBACH,UAAU,EAAE,MAAM,CAAC,SAAS;oBAC5B,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE;gCACR,IAAI,EAAE,yBAAyB;gCAC/B,WAAW,EACT,oDAAoD;gCACtD,UAAU,EAAE;oCACV,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAC5C,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;wCACnC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;wCAClC,OAAO,GAAG,CAAC;oCACb,CAAC,EACD,EAA6B,CAC9B;oCACD,QAAQ,EAAE,MAAM,CAAC,oBAAoB;yCAClC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;yCACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;iCAC5B;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;wBAAC,OAAA,CAAC;4BAC3C,IAAI,EAAE,cAAU,CAAC,SAAS;4BAC1B,OAAO,EAAE,MAAA,MAAM,CAAC,OAAO,CAAC,OAAO,mCAAI,EAAE;yBACtC,CAAC,CAAA;qBAAA,CAAC;oBACH,QAAQ,EAAE;wBACR,EAAE,EAAE,MAAA,MAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,0CAAG,CAAC,EAAE,EAAE,mCAAI,EAAE;wBAC1D,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE;4BACR,IAAI,EACF,MAAA,MAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,0CAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,mCAC3D,yBAAyB;4BAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CACnB,MAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,0CAAG,CAAC,EAAE,QAAQ,CACnD,SAAmB,CACvB;yBACF;qBACF;oBACD,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,EAAE,EAAE,UAAU,CAAC,EAAE;oBACjB,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI;wBACzB,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB;wBACpD,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa;wBAC5C,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;qBAC3C;iBACF,CAAC;YACJ,CAAC,CAAA;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAtGW,QAAA,MAAM,UAsGjB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function authHeader(options: AuthHeaderOptions): AuthHeader;
|
|
2
|
+
export type HeaderValueMapper = (value: string) => string;
|
|
3
|
+
export type AuthHeader = {
|
|
4
|
+
name: string;
|
|
5
|
+
mapper: HeaderValueMapper;
|
|
6
|
+
};
|
|
7
|
+
type AuthHeaderOptions = {
|
|
8
|
+
bearer: true;
|
|
9
|
+
} | {
|
|
10
|
+
bearer: false;
|
|
11
|
+
name: string;
|
|
12
|
+
mapper?: HeaderValueMapper;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authHeader = void 0;
|
|
4
|
+
function authHeader(options) {
|
|
5
|
+
var _a;
|
|
6
|
+
return {
|
|
7
|
+
name: options.bearer ? 'Authorization' : options.name,
|
|
8
|
+
mapper: options.bearer ? headerValueMappers.bearer : (_a = options.mapper) !== null && _a !== void 0 ? _a : headerValueMappers.default,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.authHeader = authHeader;
|
|
12
|
+
const headerValueMappers = {
|
|
13
|
+
bearer: (value) => `Bearer ${value}`,
|
|
14
|
+
default: (value) => value
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../../../packages/pieces/community/common/src/lib/ai/providers/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,UAAU,CAAC,OAA0B;;IACnD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;QAC9D,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,MAAM,mCAAI,kBAAkB,CAAC,OAAO;KAClG,CAAC;AACJ,CAAC;AALD,gCAKC;AAaD,MAAM,kBAAkB,GAAG;IACzB,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,KAAK,EAAE;IAC5C,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK;CAClC,CAAC"}
|
|
@@ -41,7 +41,7 @@ class AxiosHttpClient extends base_http_client_1.BaseHttpClient {
|
|
|
41
41
|
console.error('[HttpClient#sendRequest] error:', e);
|
|
42
42
|
if (axios_1.default.isAxiosError(e)) {
|
|
43
43
|
console.error('[HttpClient#sendRequest] error, responseStatus:', (_a = e.response) === null || _a === void 0 ? void 0 : _a.status);
|
|
44
|
-
console.error('[HttpClient#sendRequest] error, responseBody:', (_b = e.response) === null || _b === void 0 ? void 0 : _b.data);
|
|
44
|
+
console.error('[HttpClient#sendRequest] error, responseBody:', JSON.stringify((_b = e.response) === null || _b === void 0 ? void 0 : _b.data));
|
|
45
45
|
throw new http_error_1.HttpError(request.body, e);
|
|
46
46
|
}
|
|
47
47
|
throw e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios-http-client.js","sourceRoot":"","sources":["../../../../../../../../../packages/pieces/community/common/src/lib/http/axios/axios-http-client.ts"],"names":[],"mappings":";;;;AAAA,0DAAkD;AAClD,qGAAgG;AAChG,+DAA0D;AAC1D,mDAA+C;AAQ/C,MAAa,eAAgB,SAAQ,iCAAc;IACjD,YACE,OAAO,GAAG,EAAE,EACZ,0BAA6D,IAAI,uEAAiC,EAAE;QAEpG,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAC1C,CAAC;IAEK,WAAW,CACf,OAAqC;;;YAErC,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,GAAG,GAAG,CAAC;gBAClD,MAAM,EAAE,qBAAqB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACtE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEtD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACtC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;gBACnD,CAAC;gBAED,MAAM,MAAM,GAAuB;oBACjC,MAAM,EAAE,kBAAkB;oBAC1B,GAAG,EAAE,qBAAqB;oBAC1B,MAAM,EAAE,WAAW;oBACnB,OAAO;oBACP,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO;iBACR,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAE7C,OAAO;oBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,QAAQ,CAAC,OAAsB;oBACxC,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;gBACpD,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,CACX,iDAAiD,EACjD,MAAA,CAAC,CAAC,QAAQ,0CAAE,MAAM,CACnB,CAAC;oBACF,OAAO,CAAC,KAAK,CACX,+CAA+C,EAC/C,MAAA,CAAC,CAAC,QAAQ,0CAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"axios-http-client.js","sourceRoot":"","sources":["../../../../../../../../../packages/pieces/community/common/src/lib/http/axios/axios-http-client.ts"],"names":[],"mappings":";;;;AAAA,0DAAkD;AAClD,qGAAgG;AAChG,+DAA0D;AAC1D,mDAA+C;AAQ/C,MAAa,eAAgB,SAAQ,iCAAc;IACjD,YACE,OAAO,GAAG,EAAE,EACZ,0BAA6D,IAAI,uEAAiC,EAAE;QAEpG,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAC1C,CAAC;IAEK,WAAW,CACf,OAAqC;;;YAErC,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,GAAG,GAAG,CAAC;gBAClD,MAAM,EAAE,qBAAqB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACtE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEtD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACtC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;gBACnD,CAAC;gBAED,MAAM,MAAM,GAAuB;oBACjC,MAAM,EAAE,kBAAkB;oBAC1B,GAAG,EAAE,qBAAqB;oBAC1B,MAAM,EAAE,WAAW;oBACnB,OAAO;oBACP,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO;iBACR,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAE7C,OAAO;oBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,QAAQ,CAAC,OAAsB;oBACxC,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;gBACpD,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,CACX,iDAAiD,EACjD,MAAA,CAAC,CAAC,QAAQ,0CAAE,MAAM,CACnB,CAAC;oBACF,OAAO,CAAC,KAAK,CACX,+CAA+C,EAC/C,IAAI,CAAC,SAAS,CAAC,MAAA,CAAC,CAAC,QAAQ,0CAAE,IAAI,CAAC,CACjC,CAAC;oBAEF,MAAM,IAAI,sBAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvC,CAAC;gBAED,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;KAAA;IAEO,qBAAqB,CAAC,UAAsB;QAClD,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF;AA5DD,0CA4DC"}
|
|
@@ -3,14 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BaseHttpClient = void 0;
|
|
4
4
|
const http_header_1 = require("./http-header");
|
|
5
5
|
const media_type_1 = require("./media-type");
|
|
6
|
-
const node_url_1 = require("node:url");
|
|
7
6
|
class BaseHttpClient {
|
|
8
7
|
constructor(baseUrl, authenticationConverter) {
|
|
9
8
|
this.baseUrl = baseUrl;
|
|
10
9
|
this.authenticationConverter = authenticationConverter;
|
|
11
10
|
}
|
|
12
11
|
getUrl(request) {
|
|
13
|
-
const url = new
|
|
12
|
+
const url = new URL(`${this.baseUrl}${request.url}`);
|
|
14
13
|
const urlWithoutQueryParams = `${url.origin}${url.pathname}`;
|
|
15
14
|
const queryParams = new URLSearchParams();
|
|
16
15
|
// Extract query parameters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-http-client.js","sourceRoot":"","sources":["../../../../../../../../../packages/pieces/community/common/src/lib/http/core/base-http-client.ts"],"names":[],"mappings":";;;AAGA,+CAA2C;AAM3C,6CAAyC;
|
|
1
|
+
{"version":3,"file":"base-http-client.js","sourceRoot":"","sources":["../../../../../../../../../packages/pieces/community/common/src/lib/http/core/base-http-client.ts"],"names":[],"mappings":";;;AAGA,+CAA2C;AAM3C,6CAAyC;AAEzC,MAAsB,cAAc;IAClC,YACmB,OAAe,EACf,uBAA0D;QAD1D,YAAO,GAAP,OAAO,CAAQ;QACf,4BAAuB,GAAvB,uBAAuB,CAAmC;IAC1E,CAAC;IAOM,MAAM,CACd,OAAiC;QAKjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,qBAAqB,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,2BAA2B;QAC3B,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO;YACL,qBAAqB;YACrB,WAAW;SACZ,CAAC;IACJ,CAAC;IAES,UAAU,CAClB,OAAiC;;QAEjC,IAAI,cAAc,GAAgB;YAChC,CAAC,wBAAU,CAAC,MAAM,CAAC,EAAE,sBAAS,CAAC,gBAAgB;SAChD,CAAC;QAEF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,QAAQ,MAAA,OAAO,CAAC,OAAO,0CAAG,cAAc,CAAC,EAAE,CAAC;gBAC1C,KAAK,UAAU;oBACb,cAAc,CAAC,wBAAU,CAAC,YAAY,CAAC,GAAG,sBAAS,CAAC,QAAQ,CAAC;oBAC7D,MAAM;gBAER;oBACE,cAAc,CAAC,wBAAU,CAAC,YAAY,CAAC,GAAG,sBAAS,CAAC,gBAAgB,CAAC;oBACrE,MAAM;YACV,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,cAAc,mCAAQ,cAAc,GAAK,OAAO,CAAC,OAAO,CAAE,CAAC;QAC7D,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,sBAAsB,CAC5B,cAA8B,EAC9B,OAAoB;QAEpB,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAhED,wCAgEC"}
|