@squadbase/vite-server 0.1.8 → 0.1.9-dev.87dd3f7
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/dist/cli/index.js +1055 -520
- package/dist/connectors/airtable-oauth.js +3 -0
- package/dist/connectors/airtable.js +3 -0
- package/dist/connectors/amplitude.js +3 -0
- package/dist/connectors/anthropic.js +3 -0
- package/dist/connectors/asana.js +3 -0
- package/dist/connectors/attio.js +3 -0
- package/dist/connectors/backlog-api-key.js +3 -0
- package/dist/connectors/customerio.js +3 -0
- package/dist/connectors/dbt.js +3 -0
- package/dist/connectors/gamma.js +3 -0
- package/dist/connectors/gemini.js +3 -0
- package/dist/connectors/gmail-oauth.js +3 -0
- package/dist/connectors/gmail.js +11 -2
- package/dist/connectors/google-ads.js +3 -0
- package/dist/connectors/google-analytics-oauth.js +3 -0
- package/dist/connectors/google-analytics.js +3 -0
- package/dist/connectors/google-audit-log.d.ts +5 -0
- package/dist/connectors/google-audit-log.js +802 -0
- package/dist/connectors/google-calendar-oauth.js +3 -0
- package/dist/connectors/google-calendar.js +102 -49
- package/dist/connectors/google-docs.js +3 -0
- package/dist/connectors/google-drive.js +3 -0
- package/dist/connectors/google-sheets.js +3 -0
- package/dist/connectors/google-slides.js +3 -0
- package/dist/connectors/grafana.js +3 -0
- package/dist/connectors/hubspot-oauth.js +3 -0
- package/dist/connectors/hubspot.js +3 -0
- package/dist/connectors/influxdb.js +3 -0
- package/dist/connectors/intercom-oauth.js +3 -0
- package/dist/connectors/intercom.js +3 -0
- package/dist/connectors/jira-api-key.js +3 -0
- package/dist/connectors/kintone-api-token.js +3 -0
- package/dist/connectors/kintone.js +3 -0
- package/dist/connectors/linear.js +3 -0
- package/dist/connectors/linkedin-ads.js +3 -0
- package/dist/connectors/mailchimp-oauth.js +3 -0
- package/dist/connectors/mailchimp.js +3 -0
- package/dist/connectors/meta-ads-oauth.js +3 -0
- package/dist/connectors/meta-ads.js +3 -0
- package/dist/connectors/mixpanel.js +3 -0
- package/dist/connectors/notion-oauth.js +3 -0
- package/dist/connectors/notion.js +3 -0
- package/dist/connectors/openai.js +3 -0
- package/dist/connectors/salesforce.js +3 -0
- package/dist/connectors/sentry.js +3 -0
- package/dist/connectors/shopify-oauth.js +3 -0
- package/dist/connectors/shopify.js +3 -0
- package/dist/connectors/stripe-api-key.js +3 -0
- package/dist/connectors/stripe-oauth.js +3 -0
- package/dist/connectors/tiktok-ads.js +3 -0
- package/dist/connectors/wix-store.js +3 -0
- package/dist/connectors/zendesk-oauth.js +3 -0
- package/dist/connectors/zendesk.js +3 -0
- package/dist/index.js +1055 -520
- package/dist/main.js +1055 -520
- package/dist/vite-plugin.js +1055 -520
- package/package.json +5 -1
package/dist/vite-plugin.js
CHANGED
|
@@ -909,17 +909,17 @@ var require_nacl_fast = __commonJS({
|
|
|
909
909
|
}
|
|
910
910
|
var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
|
|
911
911
|
function crypto_stream_salsa20_xor(c6, cpos, m6, mpos, b6, n6, k6) {
|
|
912
|
-
var
|
|
912
|
+
var z81 = new Uint8Array(16), x6 = new Uint8Array(64);
|
|
913
913
|
var u6, i6;
|
|
914
|
-
for (i6 = 0; i6 < 16; i6++)
|
|
915
|
-
for (i6 = 0; i6 < 8; i6++)
|
|
914
|
+
for (i6 = 0; i6 < 16; i6++) z81[i6] = 0;
|
|
915
|
+
for (i6 = 0; i6 < 8; i6++) z81[i6] = n6[i6];
|
|
916
916
|
while (b6 >= 64) {
|
|
917
|
-
crypto_core_salsa20(x6,
|
|
917
|
+
crypto_core_salsa20(x6, z81, k6, sigma);
|
|
918
918
|
for (i6 = 0; i6 < 64; i6++) c6[cpos + i6] = m6[mpos + i6] ^ x6[i6];
|
|
919
919
|
u6 = 1;
|
|
920
920
|
for (i6 = 8; i6 < 16; i6++) {
|
|
921
|
-
u6 = u6 + (
|
|
922
|
-
|
|
921
|
+
u6 = u6 + (z81[i6] & 255) | 0;
|
|
922
|
+
z81[i6] = u6 & 255;
|
|
923
923
|
u6 >>>= 8;
|
|
924
924
|
}
|
|
925
925
|
b6 -= 64;
|
|
@@ -927,30 +927,30 @@ var require_nacl_fast = __commonJS({
|
|
|
927
927
|
mpos += 64;
|
|
928
928
|
}
|
|
929
929
|
if (b6 > 0) {
|
|
930
|
-
crypto_core_salsa20(x6,
|
|
930
|
+
crypto_core_salsa20(x6, z81, k6, sigma);
|
|
931
931
|
for (i6 = 0; i6 < b6; i6++) c6[cpos + i6] = m6[mpos + i6] ^ x6[i6];
|
|
932
932
|
}
|
|
933
933
|
return 0;
|
|
934
934
|
}
|
|
935
935
|
function crypto_stream_salsa20(c6, cpos, b6, n6, k6) {
|
|
936
|
-
var
|
|
936
|
+
var z81 = new Uint8Array(16), x6 = new Uint8Array(64);
|
|
937
937
|
var u6, i6;
|
|
938
|
-
for (i6 = 0; i6 < 16; i6++)
|
|
939
|
-
for (i6 = 0; i6 < 8; i6++)
|
|
938
|
+
for (i6 = 0; i6 < 16; i6++) z81[i6] = 0;
|
|
939
|
+
for (i6 = 0; i6 < 8; i6++) z81[i6] = n6[i6];
|
|
940
940
|
while (b6 >= 64) {
|
|
941
|
-
crypto_core_salsa20(x6,
|
|
941
|
+
crypto_core_salsa20(x6, z81, k6, sigma);
|
|
942
942
|
for (i6 = 0; i6 < 64; i6++) c6[cpos + i6] = x6[i6];
|
|
943
943
|
u6 = 1;
|
|
944
944
|
for (i6 = 8; i6 < 16; i6++) {
|
|
945
|
-
u6 = u6 + (
|
|
946
|
-
|
|
945
|
+
u6 = u6 + (z81[i6] & 255) | 0;
|
|
946
|
+
z81[i6] = u6 & 255;
|
|
947
947
|
u6 >>>= 8;
|
|
948
948
|
}
|
|
949
949
|
b6 -= 64;
|
|
950
950
|
cpos += 64;
|
|
951
951
|
}
|
|
952
952
|
if (b6 > 0) {
|
|
953
|
-
crypto_core_salsa20(x6,
|
|
953
|
+
crypto_core_salsa20(x6, z81, k6, sigma);
|
|
954
954
|
for (i6 = 0; i6 < b6; i6++) c6[cpos + i6] = x6[i6];
|
|
955
955
|
}
|
|
956
956
|
return 0;
|
|
@@ -1830,12 +1830,12 @@ var require_nacl_fast = __commonJS({
|
|
|
1830
1830
|
for (a6 = 0; a6 < 16; a6++) o6[a6] = c6[a6];
|
|
1831
1831
|
}
|
|
1832
1832
|
function crypto_scalarmult(q6, n6, p6) {
|
|
1833
|
-
var
|
|
1833
|
+
var z81 = new Uint8Array(32);
|
|
1834
1834
|
var x6 = new Float64Array(80), r6, i6;
|
|
1835
1835
|
var a6 = gf(), b6 = gf(), c6 = gf(), d6 = gf(), e6 = gf(), f6 = gf();
|
|
1836
|
-
for (i6 = 0; i6 < 31; i6++)
|
|
1837
|
-
|
|
1838
|
-
|
|
1836
|
+
for (i6 = 0; i6 < 31; i6++) z81[i6] = n6[i6];
|
|
1837
|
+
z81[31] = n6[31] & 127 | 64;
|
|
1838
|
+
z81[0] &= 248;
|
|
1839
1839
|
unpack25519(x6, p6);
|
|
1840
1840
|
for (i6 = 0; i6 < 16; i6++) {
|
|
1841
1841
|
b6[i6] = x6[i6];
|
|
@@ -1843,7 +1843,7 @@ var require_nacl_fast = __commonJS({
|
|
|
1843
1843
|
}
|
|
1844
1844
|
a6[0] = d6[0] = 1;
|
|
1845
1845
|
for (i6 = 254; i6 >= 0; --i6) {
|
|
1846
|
-
r6 =
|
|
1846
|
+
r6 = z81[i6 >>> 3] >>> (i6 & 7) & 1;
|
|
1847
1847
|
sel25519(a6, b6, r6);
|
|
1848
1848
|
sel25519(c6, d6, r6);
|
|
1849
1849
|
A2(e6, a6, c6);
|
|
@@ -4860,8 +4860,8 @@ var require_poly1305 = __commonJS({
|
|
|
4860
4860
|
});
|
|
4861
4861
|
var u6 = {}, w6;
|
|
4862
4862
|
for (w6 in b6) b6.hasOwnProperty(w6) && (u6[w6] = b6[w6]);
|
|
4863
|
-
var x6 = "object" === typeof window, y3 = "function" === typeof importScripts,
|
|
4864
|
-
if (
|
|
4863
|
+
var x6 = "object" === typeof window, y3 = "function" === typeof importScripts, z81 = "object" === typeof process && "object" === typeof process.versions && "string" === typeof process.versions.node, B2 = "", C2, D2, E2, F2, G2;
|
|
4864
|
+
if (z81) B2 = y3 ? __require("path").dirname(B2) + "/" : __dirname + "/", C2 = function(a6, c6) {
|
|
4865
4865
|
var d6 = H2(a6);
|
|
4866
4866
|
if (d6) return c6 ? d6 : d6.toString();
|
|
4867
4867
|
F2 || (F2 = __require("fs"));
|
|
@@ -5117,7 +5117,7 @@ var require_poly1305 = __commonJS({
|
|
|
5117
5117
|
function H2(a6) {
|
|
5118
5118
|
if (a6.startsWith(V)) {
|
|
5119
5119
|
a6 = a6.slice(V.length);
|
|
5120
|
-
if ("boolean" === typeof
|
|
5120
|
+
if ("boolean" === typeof z81 && z81) {
|
|
5121
5121
|
var c6 = Buffer.from(a6, "base64");
|
|
5122
5122
|
c6 = new Uint8Array(c6.buffer, c6.byteOffset, c6.byteLength);
|
|
5123
5123
|
} else try {
|
|
@@ -39040,14 +39040,14 @@ var init_NormalizedSchema = __esm({
|
|
|
39040
39040
|
throw new Error("@smithy/core/schema - cannot iterate non-struct schema.");
|
|
39041
39041
|
}
|
|
39042
39042
|
const struct = this.getSchema();
|
|
39043
|
-
const
|
|
39043
|
+
const z81 = struct[4].length;
|
|
39044
39044
|
let it = struct[anno.it];
|
|
39045
|
-
if (it &&
|
|
39045
|
+
if (it && z81 === it.length) {
|
|
39046
39046
|
yield* it;
|
|
39047
39047
|
return;
|
|
39048
39048
|
}
|
|
39049
|
-
it = Array(
|
|
39050
|
-
for (let i6 = 0; i6 <
|
|
39049
|
+
it = Array(z81);
|
|
39050
|
+
for (let i6 = 0; i6 < z81; ++i6) {
|
|
39051
39051
|
const k6 = struct[4][i6];
|
|
39052
39052
|
const v7 = member([struct[5][i6], 0], k6);
|
|
39053
39053
|
yield it[i6] = [k6, v7];
|
|
@@ -39723,12 +39723,12 @@ var init_split_header = __esm({
|
|
|
39723
39723
|
"../../node_modules/@smithy/core/dist-es/submodules/serde/split-header.js"() {
|
|
39724
39724
|
"use strict";
|
|
39725
39725
|
splitHeader = (value) => {
|
|
39726
|
-
const
|
|
39726
|
+
const z81 = value.length;
|
|
39727
39727
|
const values = [];
|
|
39728
39728
|
let withinQuotes = false;
|
|
39729
39729
|
let prevChar = void 0;
|
|
39730
39730
|
let anchor = 0;
|
|
39731
|
-
for (let i6 = 0; i6 <
|
|
39731
|
+
for (let i6 = 0; i6 < z81; ++i6) {
|
|
39732
39732
|
const char = value[i6];
|
|
39733
39733
|
switch (char) {
|
|
39734
39734
|
case `"`:
|
|
@@ -39749,12 +39749,12 @@ var init_split_header = __esm({
|
|
|
39749
39749
|
values.push(value.slice(anchor));
|
|
39750
39750
|
return values.map((v7) => {
|
|
39751
39751
|
v7 = v7.trim();
|
|
39752
|
-
const
|
|
39753
|
-
if (
|
|
39752
|
+
const z82 = v7.length;
|
|
39753
|
+
if (z82 < 2) {
|
|
39754
39754
|
return v7;
|
|
39755
39755
|
}
|
|
39756
|
-
if (v7[0] === `"` && v7[
|
|
39757
|
-
v7 = v7.slice(1,
|
|
39756
|
+
if (v7[0] === `"` && v7[z82 - 1] === `"`) {
|
|
39757
|
+
v7 = v7.slice(1, z82 - 1);
|
|
39758
39758
|
}
|
|
39759
39759
|
return v7.replace(/\\"/g, '"');
|
|
39760
39760
|
});
|
|
@@ -41152,11 +41152,11 @@ var init_EndpointCache = __esm({
|
|
|
41152
41152
|
}
|
|
41153
41153
|
hash(endpointParams) {
|
|
41154
41154
|
let buffer = "";
|
|
41155
|
-
const { parameters:
|
|
41156
|
-
if (
|
|
41155
|
+
const { parameters: parameters65 } = this;
|
|
41156
|
+
if (parameters65.length === 0) {
|
|
41157
41157
|
return false;
|
|
41158
41158
|
}
|
|
41159
|
-
for (const param of
|
|
41159
|
+
for (const param of parameters65) {
|
|
41160
41160
|
const val = String(endpointParams[param] ?? "");
|
|
41161
41161
|
if (val.includes("|;")) {
|
|
41162
41162
|
return false;
|
|
@@ -41873,15 +41873,15 @@ var init_resolveEndpoint = __esm({
|
|
|
41873
41873
|
init_utils();
|
|
41874
41874
|
resolveEndpoint = (ruleSetObject, options) => {
|
|
41875
41875
|
const { endpointParams, logger: logger2 } = options;
|
|
41876
|
-
const { parameters:
|
|
41876
|
+
const { parameters: parameters65, rules } = ruleSetObject;
|
|
41877
41877
|
options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
|
|
41878
|
-
const paramsWithDefault = Object.entries(
|
|
41878
|
+
const paramsWithDefault = Object.entries(parameters65).filter(([, v7]) => v7.default != null).map(([k6, v7]) => [k6, v7.default]);
|
|
41879
41879
|
if (paramsWithDefault.length > 0) {
|
|
41880
41880
|
for (const [paramKey, paramDefaultValue] of paramsWithDefault) {
|
|
41881
41881
|
endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;
|
|
41882
41882
|
}
|
|
41883
41883
|
}
|
|
41884
|
-
const requiredParams = Object.entries(
|
|
41884
|
+
const requiredParams = Object.entries(parameters65).filter(([, v7]) => v7.required).map(([k6]) => k6);
|
|
41885
41885
|
for (const requiredParam of requiredParams) {
|
|
41886
41886
|
if (endpointParams[requiredParam] == null) {
|
|
41887
41887
|
throw new EndpointError(`Missing required parameter: '${requiredParam}'`);
|
|
@@ -47491,8 +47491,8 @@ var init_ProtocolLib = __esm({
|
|
|
47491
47491
|
constructor(queryCompat = false) {
|
|
47492
47492
|
this.queryCompat = queryCompat;
|
|
47493
47493
|
}
|
|
47494
|
-
resolveRestContentType(defaultContentType,
|
|
47495
|
-
const members =
|
|
47494
|
+
resolveRestContentType(defaultContentType, inputSchema78) {
|
|
47495
|
+
const members = inputSchema78.getMemberSchemas();
|
|
47496
47496
|
const httpPayloadMember = Object.values(members).find((m6) => {
|
|
47497
47497
|
return !!m6.getMergedTraits().httpPayload;
|
|
47498
47498
|
});
|
|
@@ -47507,7 +47507,7 @@ var init_ProtocolLib = __esm({
|
|
|
47507
47507
|
} else {
|
|
47508
47508
|
return defaultContentType;
|
|
47509
47509
|
}
|
|
47510
|
-
} else if (!
|
|
47510
|
+
} else if (!inputSchema78.isUnitSchema()) {
|
|
47511
47511
|
const hasBody = Object.values(members).find((m6) => {
|
|
47512
47512
|
const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m6.getMergedTraits();
|
|
47513
47513
|
const noPrefixHeaders = httpPrefixHeaders === void 0;
|
|
@@ -48350,9 +48350,9 @@ var init_AwsRestJsonProtocol = __esm({
|
|
|
48350
48350
|
}
|
|
48351
48351
|
async serializeRequest(operationSchema, input, context) {
|
|
48352
48352
|
const request2 = await super.serializeRequest(operationSchema, input, context);
|
|
48353
|
-
const
|
|
48353
|
+
const inputSchema78 = NormalizedSchema.of(operationSchema.input);
|
|
48354
48354
|
if (!request2.headers["content-type"]) {
|
|
48355
|
-
const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(),
|
|
48355
|
+
const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema78);
|
|
48356
48356
|
if (contentType) {
|
|
48357
48357
|
request2.headers["content-type"] = contentType;
|
|
48358
48358
|
}
|
|
@@ -48364,8 +48364,8 @@ var init_AwsRestJsonProtocol = __esm({
|
|
|
48364
48364
|
}
|
|
48365
48365
|
async deserializeResponse(operationSchema, context, response) {
|
|
48366
48366
|
const output = await super.deserializeResponse(operationSchema, context, response);
|
|
48367
|
-
const
|
|
48368
|
-
for (const [name, member2] of
|
|
48367
|
+
const outputSchema78 = NormalizedSchema.of(operationSchema.output);
|
|
48368
|
+
for (const [name, member2] of outputSchema78.structIterator()) {
|
|
48369
48369
|
if (member2.getMemberTraits().httpPayload && !(name in output)) {
|
|
48370
48370
|
output[name] = null;
|
|
48371
48371
|
}
|
|
@@ -52229,22 +52229,22 @@ var init_loadCognitoIdentity = __esm({
|
|
|
52229
52229
|
});
|
|
52230
52230
|
|
|
52231
52231
|
// ../../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js
|
|
52232
|
-
function fromCognitoIdentity(
|
|
52232
|
+
function fromCognitoIdentity(parameters65) {
|
|
52233
52233
|
return async (awsIdentityProperties) => {
|
|
52234
|
-
|
|
52234
|
+
parameters65.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity");
|
|
52235
52235
|
const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));
|
|
52236
|
-
const fromConfigs = (property) =>
|
|
52237
|
-
const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(
|
|
52236
|
+
const fromConfigs = (property) => parameters65.clientConfig?.[property] ?? parameters65.parentClientConfig?.[property] ?? awsIdentityProperties?.callerClientConfig?.[property];
|
|
52237
|
+
const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters65.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters65.logger), SessionToken } = throwOnMissingCredentials(parameters65.logger) } = await (parameters65.client ?? new CognitoIdentityClient2(Object.assign({}, parameters65.clientConfig ?? {}, {
|
|
52238
52238
|
region: fromConfigs("region"),
|
|
52239
52239
|
profile: fromConfigs("profile"),
|
|
52240
52240
|
userAgentAppId: fromConfigs("userAgentAppId")
|
|
52241
52241
|
}))).send(new GetCredentialsForIdentityCommand2({
|
|
52242
|
-
CustomRoleArn:
|
|
52243
|
-
IdentityId:
|
|
52244
|
-
Logins:
|
|
52242
|
+
CustomRoleArn: parameters65.customRoleArn,
|
|
52243
|
+
IdentityId: parameters65.identityId,
|
|
52244
|
+
Logins: parameters65.logins ? await resolveLogins(parameters65.logins) : void 0
|
|
52245
52245
|
}));
|
|
52246
52246
|
return {
|
|
52247
|
-
identityId:
|
|
52247
|
+
identityId: parameters65.identityId,
|
|
52248
52248
|
accessKeyId: AccessKeyId,
|
|
52249
52249
|
secretAccessKey: SecretKey,
|
|
52250
52250
|
sessionToken: SessionToken,
|
|
@@ -64805,11 +64805,11 @@ var require_bignumber = __commonJS({
|
|
|
64805
64805
|
return n6 > 0 || n6 === i6 ? i6 : i6 - 1;
|
|
64806
64806
|
}
|
|
64807
64807
|
function coeffToString(a6) {
|
|
64808
|
-
var s6,
|
|
64808
|
+
var s6, z81, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
|
|
64809
64809
|
for (; i6 < j6; ) {
|
|
64810
64810
|
s6 = a6[i6++] + "";
|
|
64811
|
-
|
|
64812
|
-
for (;
|
|
64811
|
+
z81 = LOG_BASE - s6.length;
|
|
64812
|
+
for (; z81--; s6 = "0" + s6) ;
|
|
64813
64813
|
r6 += s6;
|
|
64814
64814
|
}
|
|
64815
64815
|
for (j6 = r6.length; r6.charCodeAt(--j6) === 48; ) ;
|
|
@@ -64842,15 +64842,15 @@ var require_bignumber = __commonJS({
|
|
|
64842
64842
|
function toExponential(str, e6) {
|
|
64843
64843
|
return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e6 < 0 ? "e" : "e+") + e6;
|
|
64844
64844
|
}
|
|
64845
|
-
function toFixedPoint(str, e6,
|
|
64845
|
+
function toFixedPoint(str, e6, z81) {
|
|
64846
64846
|
var len, zs;
|
|
64847
64847
|
if (e6 < 0) {
|
|
64848
|
-
for (zs =
|
|
64848
|
+
for (zs = z81 + "."; ++e6; zs += z81) ;
|
|
64849
64849
|
str = zs + str;
|
|
64850
64850
|
} else {
|
|
64851
64851
|
len = str.length;
|
|
64852
64852
|
if (++e6 > len) {
|
|
64853
|
-
for (zs =
|
|
64853
|
+
for (zs = z81, e6 -= len; --e6; zs += z81) ;
|
|
64854
64854
|
str += zs;
|
|
64855
64855
|
} else if (e6 < len) {
|
|
64856
64856
|
str = str.slice(0, e6) + "." + str.slice(e6);
|
|
@@ -86469,6 +86469,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
86469
86469
|
releaseFlag;
|
|
86470
86470
|
proxyPolicy;
|
|
86471
86471
|
experimentalAttributes;
|
|
86472
|
+
categories;
|
|
86472
86473
|
onboarding;
|
|
86473
86474
|
systemPrompt;
|
|
86474
86475
|
tools;
|
|
@@ -86484,6 +86485,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
86484
86485
|
this.releaseFlag = config.releaseFlag;
|
|
86485
86486
|
this.proxyPolicy = config.proxyPolicy;
|
|
86486
86487
|
this.experimentalAttributes = config.experimentalAttributes;
|
|
86488
|
+
this.categories = config.categories ?? [];
|
|
86487
86489
|
this.onboarding = config.onboarding;
|
|
86488
86490
|
this.systemPrompt = config.systemPrompt;
|
|
86489
86491
|
this.tools = config.tools;
|
|
@@ -86848,6 +86850,7 @@ var snowflakeConnector = new ConnectorPlugin({
|
|
|
86848
86850
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oyVtAcP3pMlXaOrts9unk/b7a9dc25d15c388b66e983041b855447/snowflake.svg",
|
|
86849
86851
|
parameters,
|
|
86850
86852
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
86853
|
+
categories: ["database"],
|
|
86851
86854
|
onboarding: snowflakeOnboarding,
|
|
86852
86855
|
systemPrompt: {
|
|
86853
86856
|
en: `### Tools
|
|
@@ -87131,6 +87134,7 @@ var snowflakePatConnector = new ConnectorPlugin({
|
|
|
87131
87134
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oyVtAcP3pMlXaOrts9unk/b7a9dc25d15c388b66e983041b855447/snowflake.svg",
|
|
87132
87135
|
parameters: parameters2,
|
|
87133
87136
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
87137
|
+
categories: ["database"],
|
|
87134
87138
|
onboarding: snowflakeOnboarding,
|
|
87135
87139
|
systemPrompt: {
|
|
87136
87140
|
en: `### Tools
|
|
@@ -87494,6 +87498,7 @@ var postgresqlConnector = new ConnectorPlugin({
|
|
|
87494
87498
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/42AHi2uqteUn65MyqdN6V7/a0f68f12af6aac96bbcda5980f43de07/elephant.png",
|
|
87495
87499
|
parameters: parameters3,
|
|
87496
87500
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
87501
|
+
categories: ["database"],
|
|
87497
87502
|
onboarding: postgresqlOnboarding,
|
|
87498
87503
|
systemPrompt: {
|
|
87499
87504
|
en: `### Tools
|
|
@@ -87693,6 +87698,7 @@ var mysqlConnector = new ConnectorPlugin({
|
|
|
87693
87698
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6ghPFeGgl7uBs5NHH1a4L/512c9433beec5b595caa41f04921c1f9/logo-mysql-170x115.png",
|
|
87694
87699
|
parameters: parameters4,
|
|
87695
87700
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
87701
|
+
categories: ["database"],
|
|
87696
87702
|
onboarding: mysqlOnboarding,
|
|
87697
87703
|
systemPrompt: {
|
|
87698
87704
|
en: `### Tools
|
|
@@ -88067,6 +88073,7 @@ var bigqueryConnector = new ConnectorPlugin({
|
|
|
88067
88073
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6nlehQyOmdbktG5hOYkYMr/6ca559140d5ddc7dadc5eac88858a563/bigquery.svg",
|
|
88068
88074
|
parameters: parameters5,
|
|
88069
88075
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
88076
|
+
categories: ["database"],
|
|
88070
88077
|
onboarding: bigqueryOnboarding,
|
|
88071
88078
|
systemPrompt: {
|
|
88072
88079
|
en: `### Tools
|
|
@@ -88597,6 +88604,7 @@ var bigqueryOauthConnector = new ConnectorPlugin({
|
|
|
88597
88604
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6nlehQyOmdbktG5hOYkYMr/6ca559140d5ddc7dadc5eac88858a563/bigquery.svg",
|
|
88598
88605
|
parameters: parameters6,
|
|
88599
88606
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
88607
|
+
categories: ["database"],
|
|
88600
88608
|
onboarding: bigqueryOnboarding2,
|
|
88601
88609
|
proxyPolicy: {
|
|
88602
88610
|
allowlist: [
|
|
@@ -88867,6 +88875,7 @@ var awsAthenaConnector = new ConnectorPlugin({
|
|
|
88867
88875
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5x0vIHtUHfJJMZUv4RFOYZ/5059bac389f0169542f39cdb4b387d2c/Athena.svg",
|
|
88868
88876
|
parameters: parameters7,
|
|
88869
88877
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
88878
|
+
categories: ["database"],
|
|
88870
88879
|
onboarding: awsAthenaOnboarding,
|
|
88871
88880
|
systemPrompt: {
|
|
88872
88881
|
en: `### Tools
|
|
@@ -89239,6 +89248,7 @@ var redshiftConnector = new ConnectorPlugin({
|
|
|
89239
89248
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/AEwW2psmrnZ7htTVsgA9t/a637e31707c5d760be73ce1d8ec75580/aws-redshift-logo.svg",
|
|
89240
89249
|
parameters: parameters8,
|
|
89241
89250
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
89251
|
+
categories: ["database"],
|
|
89242
89252
|
onboarding: redshiftOnboarding,
|
|
89243
89253
|
systemPrompt: {
|
|
89244
89254
|
en: `### Tools
|
|
@@ -89525,6 +89535,7 @@ var databricksConnector = new ConnectorPlugin({
|
|
|
89525
89535
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6QgcrfpQOKg18P7DdgKerd/af55bf0d871339049824dd167b97a29f/databricks-icon.svg",
|
|
89526
89536
|
parameters: parameters9,
|
|
89527
89537
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
89538
|
+
categories: ["database"],
|
|
89528
89539
|
onboarding: databricksOnboarding,
|
|
89529
89540
|
systemPrompt: {
|
|
89530
89541
|
en: `### Tools
|
|
@@ -89731,6 +89742,7 @@ var airtableConnector = new ConnectorPlugin({
|
|
|
89731
89742
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19JUphfOZjyjTK6Zg4NGCf/8c56227b088cada52d3a2d9385a3be97/airtable.svg",
|
|
89732
89743
|
parameters: parameters10,
|
|
89733
89744
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
89745
|
+
categories: ["productivity"],
|
|
89734
89746
|
onboarding: airtableOnboarding,
|
|
89735
89747
|
systemPrompt: {
|
|
89736
89748
|
en: `### Tools
|
|
@@ -90212,6 +90224,7 @@ var googleAdsConnector = new ConnectorPlugin({
|
|
|
90212
90224
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1NGvmgvCxX7Tn11EST2N3N/a745fe7c63d360ed40a27ddaad3af168/google-ads.svg",
|
|
90213
90225
|
parameters: parameters11,
|
|
90214
90226
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
90227
|
+
categories: ["marketing"],
|
|
90215
90228
|
onboarding: googleAdsOnboarding,
|
|
90216
90229
|
proxyPolicy: {
|
|
90217
90230
|
allowlist: [
|
|
@@ -90517,6 +90530,7 @@ var googleAnalyticsConnector = new ConnectorPlugin({
|
|
|
90517
90530
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7fs0ipzxuD9mACDzBATtxX/3c53ed90d15c96483e4f78cb29dab5e9/google-analytics.svg",
|
|
90518
90531
|
parameters: parameters12,
|
|
90519
90532
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
90533
|
+
categories: ["marketing"],
|
|
90520
90534
|
onboarding: googleAnalyticsOnboarding,
|
|
90521
90535
|
systemPrompt: {
|
|
90522
90536
|
en: `### Tools
|
|
@@ -91082,6 +91096,7 @@ var googleAnalyticsOauthConnector = new ConnectorPlugin({
|
|
|
91082
91096
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7fs0ipzxuD9mACDzBATtxX/3c53ed90d15c96483e4f78cb29dab5e9/google-analytics.svg",
|
|
91083
91097
|
parameters: parameters13,
|
|
91084
91098
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
91099
|
+
categories: ["marketing"],
|
|
91085
91100
|
onboarding: googleAnalyticsOauthOnboarding,
|
|
91086
91101
|
proxyPolicy: {
|
|
91087
91102
|
allowlist: [
|
|
@@ -91310,7 +91325,8 @@ var outputSchema21 = z21.discriminatedUnion("success", [
|
|
|
91310
91325
|
z21.object({
|
|
91311
91326
|
success: z21.literal(true),
|
|
91312
91327
|
status: z21.number(),
|
|
91313
|
-
data: z21.record(z21.string(), z21.unknown())
|
|
91328
|
+
data: z21.record(z21.string(), z21.unknown()),
|
|
91329
|
+
serviceAccountEmail: z21.string()
|
|
91314
91330
|
}),
|
|
91315
91331
|
z21.object({
|
|
91316
91332
|
success: z21.literal(false),
|
|
@@ -91391,7 +91407,12 @@ var requestTool5 = new ConnectorTool({
|
|
|
91391
91407
|
serviceAccountEmail
|
|
91392
91408
|
};
|
|
91393
91409
|
}
|
|
91394
|
-
return {
|
|
91410
|
+
return {
|
|
91411
|
+
success: true,
|
|
91412
|
+
status: response.status,
|
|
91413
|
+
data,
|
|
91414
|
+
serviceAccountEmail
|
|
91415
|
+
};
|
|
91395
91416
|
} finally {
|
|
91396
91417
|
clearTimeout(timeout);
|
|
91397
91418
|
}
|
|
@@ -91438,7 +91459,8 @@ var outputSchema22 = z22.discriminatedUnion("success", [
|
|
|
91438
91459
|
z22.object({
|
|
91439
91460
|
success: z22.literal(true),
|
|
91440
91461
|
status: z22.number(),
|
|
91441
|
-
data: z22.record(z22.string(), z22.unknown())
|
|
91462
|
+
data: z22.record(z22.string(), z22.unknown()),
|
|
91463
|
+
serviceAccountEmail: z22.string()
|
|
91442
91464
|
}),
|
|
91443
91465
|
z22.object({
|
|
91444
91466
|
success: z22.literal(false),
|
|
@@ -91520,7 +91542,12 @@ var requestWithDelegationTool = new ConnectorTool({
|
|
|
91520
91542
|
serviceAccountEmail
|
|
91521
91543
|
};
|
|
91522
91544
|
}
|
|
91523
|
-
return {
|
|
91545
|
+
return {
|
|
91546
|
+
success: true,
|
|
91547
|
+
status: response.status,
|
|
91548
|
+
data,
|
|
91549
|
+
serviceAccountEmail
|
|
91550
|
+
};
|
|
91524
91551
|
} finally {
|
|
91525
91552
|
clearTimeout(timeout);
|
|
91526
91553
|
}
|
|
@@ -91542,7 +91569,18 @@ var READONLY_SCOPES = '["https://www.googleapis.com/auth/calendar.readonly"]';
|
|
|
91542
91569
|
var SERVICE_ACCOUNT_KEY_PARAM_SLUG = parameters14.serviceAccountKeyJsonBase64.slug;
|
|
91543
91570
|
var googleCalendarOnboarding = new ConnectorOnboarding({
|
|
91544
91571
|
connectionSetupInstructions: {
|
|
91545
|
-
ja: `Google Calendar \u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u3092\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3057\u307E\u3059\u3002\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u3092\u9078\u3093\u3067\u3082\u3089\u3044\u3001\u5BFE\u8C61\u30AB\u30EC\u30F3\u30C0\u30FC\u3092
|
|
91572
|
+
ja: `Google Calendar \u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u3092\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3057\u307E\u3059\u3002\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u3092\u9078\u3093\u3067\u3082\u3089\u3044\u3001\u5BFE\u8C61\u30AB\u30EC\u30F3\u30C0\u30FC\u3092 Project Knowledge \u306B\u8A18\u9332\u3057\u307E\u3059\u3002
|
|
91573
|
+
|
|
91574
|
+
## \u30B9\u30C6\u30C3\u30D7 0: \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u53D6\u5F97
|
|
91575
|
+
|
|
91576
|
+
\u4EE5\u964D\u306E\u30B9\u30C6\u30C3\u30D7\u3067\u30E6\u30FC\u30B6\u30FC\u306B\u6848\u5185\u3059\u308B\u305F\u3081\u306B\u3001\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
91577
|
+
|
|
91578
|
+
\`${requestToolName}\` \u3092\u4EE5\u4E0B\u306E\u5F15\u6570\u3067 1 \u56DE\u547C\u3073\u3001\u30EC\u30B9\u30DD\u30F3\u30B9\u306E \`serviceAccountEmail\` \u3092\u4FDD\u6301\u3059\u308B:
|
|
91579
|
+
- \`method\`: \`"GET"\`
|
|
91580
|
+
- \`path\`: \`"/users/me/calendarList"\`
|
|
91581
|
+
- \`scopes\`: \`${READONLY_SCOPES}\`
|
|
91582
|
+
|
|
91583
|
+
\u6210\u529F\u30FB\u5931\u6557\u3069\u3061\u3089\u3067\u3082 \`serviceAccountEmail\` \u306F\u8FD4\u3063\u3066\u304F\u308B\u306E\u3067\u3001\u7D50\u679C\u306E\u30EA\u30B9\u30C8\u306F\u3053\u306E\u30B9\u30C6\u30C3\u30D7\u3067\u306F\u7121\u8996\u3057\u3066\u3088\u3044\u3002\u4EE5\u964D\u3053\u306E\u5024\u3092 \`<serviceAccountEmail>\` \u3068\u3057\u3066\u53C2\u7167\u3059\u308B\u3002
|
|
91546
91584
|
|
|
91547
91585
|
## \u30B9\u30C6\u30C3\u30D7 1: \u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u3092\u9078\u629E
|
|
91548
91586
|
|
|
@@ -91554,52 +91592,60 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
|
|
|
91554
91592
|
- \`{ label: "\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u3067\u7D44\u7E54\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B", value: "delegation" }\`
|
|
91555
91593
|
- \`{ label: "\u4E21\u65B9\u3092\u7D44\u307F\u5408\u308F\u305B\u308B", value: "both" }\`
|
|
91556
91594
|
|
|
91557
|
-
## \u30B9\u30C6\u30C3\u30D7 2: \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u7D4C\u8DEF
|
|
91595
|
+
## \u30B9\u30C6\u30C3\u30D7 2: \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u7D4C\u8DEF (\`"service-account"\` \u307E\u305F\u306F \`"both"\` \u306E\u5834\u5408)
|
|
91596
|
+
|
|
91597
|
+
\u30E6\u30FC\u30B6\u30FC\u304C\u3042\u3089\u304B\u3058\u3081\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8 \`<serviceAccountEmail>\` \u306B\u5171\u6709\u8A2D\u5B9A\u3057\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u306E ID \u3092\u76F4\u63A5\u53D7\u3051\u53D6\u308A\u3001\u758E\u901A\u78BA\u8A8D\u3057\u307E\u3059\u3002multiSelect \u306F\u51FA\u3055\u306A\u3044 (\u30E6\u30FC\u30B6\u30FC\u304C\u5165\u529B\u3057\u305F\u6642\u70B9\u3067\u5BFE\u8C61\u304C\u78BA\u5B9A\u3057\u3066\u3044\u308B\u305F\u3081)\u3002
|
|
91598
|
+
|
|
91599
|
+
1. \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC ID \u3092\u805E\u304F:
|
|
91600
|
+
- \`type\`: \`"freeText"\`
|
|
91601
|
+
- \`question\`: \u300C\u30A2\u30AF\u30BB\u30B9\u3057\u305F\u3044\u30AB\u30EC\u30F3\u30C0\u30FC\u306E ID \u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u53EF\u3001\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002\u3042\u3089\u304B\u3058\u3081 \`<serviceAccountEmail>\` \u306B\u5171\u6709\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30E1\u30A4\u30F3\u30AB\u30EC\u30F3\u30C0\u30FC\u306F\u6240\u6709\u8005\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u305D\u306E\u307E\u307E\u5165\u529B\u3067\u304D\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\uFF08\u30C1\u30FC\u30E0\u30AB\u30EC\u30F3\u30C0\u30FC\u7B49\uFF09\u306F Google Calendar \u306E\u8A2D\u5B9A\u304B\u3089\u300C\u30AB\u30EC\u30F3\u30C0\u30FC ID\u300D\u3092\u30B3\u30D4\u30FC\u3057\u3066\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u300D
|
|
91602
|
+
- \`placeholder\`: \`"alice@example.com, c_xxx@group.calendar.google.com"\`
|
|
91558
91603
|
|
|
91559
|
-
|
|
91604
|
+
2. \u5165\u529B\u3055\u308C\u305F\u5404\u30AB\u30EC\u30F3\u30C0\u30FC ID \`<id>\` \u306B\u3064\u3044\u3066 \`${requestToolName}\` \u3067\u758E\u901A\u78BA\u8A8D:
|
|
91560
91605
|
- \`method\`: \`"GET"\`
|
|
91561
|
-
- \`path\`: \`"/
|
|
91606
|
+
- \`path\`: \`"/calendars/<id>"\`
|
|
91562
91607
|
- \`scopes\`: \`${READONLY_SCOPES}\`
|
|
91608
|
+
- \u6210\u529F\u3059\u308C\u3070\u3001\u30EC\u30B9\u30DD\u30F3\u30B9 \`data.summary\` \u3092\u30AB\u30EC\u30F3\u30C0\u30FC\u540D\u3068\u3057\u3066\u4FDD\u6301
|
|
91609
|
+
- \u5931\u6557 (404 / 403 \u7B49) \u306F\u30A2\u30AF\u30BB\u30B9\u4E0D\u53EF\u3068\u3057\u3066\u8A18\u9332
|
|
91563
91610
|
|
|
91564
|
-
|
|
91565
|
-
- \
|
|
91566
|
-
- \
|
|
91567
|
-
- \`type\`: \`"multiSelect"\`
|
|
91568
|
-
- \`question\`: \u300C\u4F7F\u7528\u3059\u308B\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u53EF\uFF09\u300D
|
|
91569
|
-
- \`options\`: \u5404\u30AB\u30EC\u30F3\u30C0\u30FC\u306B\u3064\u3044\u3066 \`label\`: \`"<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D>"\`\u3001\`value\`: \`"<calendarId>"\`
|
|
91611
|
+
3. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
|
|
91612
|
+
- **\u5168 ID \u5931\u6557**: \u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u304C \`"service-account"\` \u3060\u3051\u306A\u3089\u30B9\u30C6\u30C3\u30D7 5 \u3078\u3002\`"both"\` \u306E\u5834\u5408\u306F\u305D\u306E\u307E\u307E\u30B9\u30C6\u30C3\u30D7 3 \u3078\u9032\u3080
|
|
91613
|
+
- **\u4E00\u90E8\u307E\u305F\u306F\u5168\u4EF6\u6210\u529F**: \u6210\u529F\u3057\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u305D\u306E\u307E\u307E\u30B9\u30C6\u30C3\u30D7 4 \u7528\u306E\u9078\u629E\u7D50\u679C\u3068\u3057\u3066\u78BA\u5B9A\u3059\u308B\u3002\u5931\u6557\u304C\u3042\u308C\u3070\u3001\u305D\u306E\u65E8\u3092 1 \u6587\u3067\u77ED\u304F\u4F1D\u3048\u308B
|
|
91570
91614
|
|
|
91571
|
-
## \u30B9\u30C6\u30C3\u30D7 3: \u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u7D4C\u8DEF
|
|
91615
|
+
## \u30B9\u30C6\u30C3\u30D7 3: \u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u7D4C\u8DEF (\`"delegation"\` \u307E\u305F\u306F \`"both"\` \u306E\u5834\u5408)
|
|
91616
|
+
|
|
91617
|
+
\u5404 Workspace \u30E6\u30FC\u30B6\u30FC\u304C\u6301\u3063\u3066\u3044\u308B\u591A\u6570\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u304B\u3089\u3001\u5BFE\u8C61\u3092\u7D5E\u308A\u8FBC\u307F\u307E\u3059\u3002
|
|
91572
91618
|
|
|
91573
91619
|
1. \`askUserQuestion\` \u3067\u5BFE\u8C61\u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u805E\u304F:
|
|
91574
91620
|
- \`type\`: \`"freeText"\`
|
|
91575
|
-
- \`question\`: \u300C\u30A2\u30AF\u30BB\u30B9\u3057\u305F\u3044\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u6240\u6709\u3059\u308B Google Workspace \u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u53EF\u3001\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002Workspace \u7BA1\u7406\u8005\u304C\
|
|
91621
|
+
- \`question\`: \u300C\u30A2\u30AF\u30BB\u30B9\u3057\u305F\u3044\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u6240\u6709\u3059\u308B Google Workspace \u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u53EF\u3001\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002Workspace \u7BA1\u7406\u8005\u304C\u3042\u3089\u304B\u3058\u3081\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8 \`<serviceAccountEmail>\` \u306B\u5BFE\u3057\u3066\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u3092\u627F\u8A8D\u3057\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08[\u7BA1\u7406\u8005\u5411\u3051\u8A2D\u5B9A\u30AC\u30A4\u30C9](https://support.google.com/a/answer/162106)\uFF09\u3002\u300D
|
|
91576
91622
|
- \`placeholder\`: \`"alice@example.com, bob@example.com"\`
|
|
91577
91623
|
|
|
91578
|
-
2. \
|
|
91624
|
+
2. \u5165\u529B\u3055\u308C\u305F\u5404\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9 \`<email>\` \u306B\u3064\u3044\u3066 \`${requestWithDelegationToolName}\` \u3092\u547C\u3073\u3001\u305D\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u308B\u30AB\u30EC\u30F3\u30C0\u30FC\u4E00\u89A7\u3092\u53D6\u5F97:
|
|
91579
91625
|
- \`method\`: \`"GET"\`
|
|
91580
91626
|
- \`path\`: \`"/users/me/calendarList"\`
|
|
91581
91627
|
- \`subject\`: \`<email>\`
|
|
91582
91628
|
- \`scopes\`: \`${READONLY_SCOPES}\`
|
|
91583
91629
|
|
|
91584
|
-
3. \
|
|
91585
|
-
-
|
|
91586
|
-
-
|
|
91630
|
+
3. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
|
|
91631
|
+
- **\u5168 email \u3067\u5931\u6557**: \u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u304C \`"delegation"\` \u3060\u3051\u3001\u307E\u305F\u306F \`"both"\` \u3067\u30B9\u30C6\u30C3\u30D7 2 \u3067\u3082 0 \u4EF6\u306E\u3068\u304D\u306F\u30B9\u30C6\u30C3\u30D7 5 \u3078\u3002\`"both"\` \u3067\u30B9\u30C6\u30C3\u30D7 2 \u306B\u30AB\u30EC\u30F3\u30C0\u30FC\u304C\u3042\u308C\u3070\u3001\u305D\u306E\u307E\u307E\u30B9\u30C6\u30C3\u30D7 4 \u3078\u9032\u3080
|
|
91632
|
+
- **\u4E00\u90E8\u307E\u305F\u306F\u5168\u4EF6\u6210\u529F**: \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u7D5E\u308A\u8FBC\u307E\u305B\u308B
|
|
91587
91633
|
- \`type\`: \`"multiSelect"\`
|
|
91588
91634
|
- \`question\`: \u300C\u4F7F\u7528\u3059\u308B\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u53EF\uFF09\u300D
|
|
91589
|
-
- \`options\`: \u5404\u30AB\u30EC\u30F3\u30C0\u30FC\u306B\u3064\u3044\u3066 \`label\`: \`"<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D> (\u6240\u6709\u8005: <\u305D\u306E\u3068\u304D\u306E subject>)"\`\u3001\`value\`: \`"<calendarId>"\`
|
|
91635
|
+
- \`options\`: \u767A\u898B\u3057\u305F\u5404\u30AB\u30EC\u30F3\u30C0\u30FC\u306B\u3064\u3044\u3066 \`label\`: \`"<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D> (\u6240\u6709\u8005: <\u305D\u306E\u3068\u304D\u306E subject>)"\`\u3001\`value\`: \`"<calendarId>"\`
|
|
91590
91636
|
- \u4E00\u90E8\u5931\u6557\u304C\u3042\u308C\u3070\u3001\u305D\u306E\u65E8\u3092 1 \u6587\u3067\u77ED\u304F\u4F1D\u3048\u308B
|
|
91591
91637
|
|
|
91592
91638
|
## \u30B9\u30C6\u30C3\u30D7 4: Project Knowledge \u306B\u8A18\u9332
|
|
91593
91639
|
|
|
91594
|
-
\u30B9\u30C6\u30C3\u30D7 2 \u3068 3 \u3067\
|
|
91640
|
+
\u30B9\u30C6\u30C3\u30D7 2 \u3068 3 \u3067\u78BA\u5B9A\u3057\u305F calendarId \u96C6\u5408\u3092\u7D71\u5408\u3059\u308B\u3002\u5404 calendarId \u306B\u3064\u3044\u3066\u3001\u30B9\u30C6\u30C3\u30D7 2 \u3067\u758E\u901A\u78BA\u8A8D\u3057\u305F\u7D50\u679C\u304B\u3001\u30B9\u30C6\u30C3\u30D7 3 \u306E\u30C7\u30A3\u30B9\u30AB\u30D0\u30EA\u7D50\u679C\u304B\u3089\u7D4C\u8DEF\u3068 (delegation \u306E\u5834\u5408\u306F) subject \u3092\u7279\u5B9A\u3059\u308B\u3002\`finalizeSetup\` \u3092\u547C\u3073\u3001\`projectKnowledge\` \u306E \`#### \u30B9\u30B3\u30FC\u30D7\` \u7BC0\u306B\u5404\u30AB\u30EC\u30F3\u30C0\u30FC\u3092 1 \u884C\u305A\u3064\u5217\u6319\u3059\u308B:
|
|
91595
91641
|
- \u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u7D4C\u7531: \`- calendar: <calendarId> (delegation, subject: <subject>, name: "<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D>")\`
|
|
91596
91642
|
- \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u7D4C\u8DEF: \`- calendar: <calendarId> (service-account, name: "<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D>")\`
|
|
91597
91643
|
|
|
91598
|
-
## \u30B9\u30C6\u30C3\u30D7 5: \u6700\u7D42\u7684\u306B\u30AB\u30EC\u30F3\u30C0\u30FC\u304C 0 \u4EF6\u306E\
|
|
91644
|
+
## \u30B9\u30C6\u30C3\u30D7 5: \u6700\u7D42\u7684\u306B\u30AB\u30EC\u30F3\u30C0\u30FC\u304C 0 \u4EF6\u306E\u3068\u304D\u306E\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3
|
|
91599
91645
|
|
|
91600
|
-
\u6700\u7D42\u7684\u306B\
|
|
91646
|
+
\u6700\u7D42\u7684\u306B\u5BFE\u8C61\u30AB\u30EC\u30F3\u30C0\u30FC\u304C 1 \u4EF6\u3082\u306A\u3044\u5834\u5408\u3001\`askUserQuestion\` \u3067\u6B21\u306E\u3088\u3046\u306B\u6848\u5185\u3059\u308B:
|
|
91601
91647
|
|
|
91602
|
-
- \`question\`: \u300C\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30AB\u30EC\u30F3\u30C0\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6B21\u306E\u3044\u305A\u308C\u304B\u3092\u884C\u3063\u3066\u304B\u3089\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\
|
|
91648
|
+
- \`question\`: \u300C\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30AB\u30EC\u30F3\u30C0\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8 \`<serviceAccountEmail>\` \u3067\u6B21\u306E\u3044\u305A\u308C\u304B\u3092\u884C\u3063\u3066\u304B\u3089\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u300D
|
|
91603
91649
|
- \`options\`: \u3053\u3053\u307E\u3067\u306B\u8A66\u3057\u305F\u7D4C\u8DEF\u306B\u5FDC\u3058\u3066\u4EE5\u4E0B\u3092\u7D44\u307F\u5408\u308F\u305B\u308B:
|
|
91604
91650
|
- \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u7D4C\u8DEF\u3092\u8A66\u3057\u305F\u5834\u5408: \`{ label: "\u5BFE\u8C61\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5171\u6709\u3057\u305F\u306E\u3067\u30EA\u30C8\u30E9\u30A4", value: "retry" }\`
|
|
91605
91651
|
- \u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u7D4C\u8DEF\u3092\u8A66\u3057\u305F\u5834\u5408: \`{ label: "\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u3092\u627F\u8A8D\u3057\u305F\u306E\u3067\u30EA\u30C8\u30E9\u30A4", value: "retry" }\`
|
|
@@ -91607,17 +91653,28 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
|
|
|
91607
91653
|
- \u5E38\u306B: \`{ label: "\u5225\u306E\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u8A2D\u5B9A\u3057\u76F4\u3059", value: "change-service-account" }\`
|
|
91608
91654
|
|
|
91609
91655
|
\u9078\u629E\u7D50\u679C\u306B\u5FDC\u3058\u305F\u6319\u52D5:
|
|
91610
|
-
- "retry": \u76F4\u524D\u306E\u7D4C\u8DEF\u3092\u518D probe (\
|
|
91656
|
+
- "retry": \u76F4\u524D\u306E\u7D4C\u8DEF\u3092\u518D probe (\u30EA\u30C8\u30E9\u30A4\u306E\u4ED5\u65B9\u306F\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u304C\u6587\u8108\u306B\u5FDC\u3058\u3066\u5224\u65AD)
|
|
91611
91657
|
- "restart": \u30B9\u30C6\u30C3\u30D7 1 \u304B\u3089\u518D\u5B9F\u884C
|
|
91612
91658
|
- "change-service-account": \`updateConnectionParameters\` \u3092\u547C\u3093\u3067\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8 JSON \u3092\u518D\u5165\u529B\u3055\u305B\u308B:
|
|
91613
91659
|
- \`parameterSlug\`: \`"${SERVICE_ACCOUNT_KEY_PARAM_SLUG}"\`
|
|
91614
|
-
- \u5B8C\u4E86\u5F8C\u3001\u30B9\u30C6\u30C3\u30D7
|
|
91660
|
+
- \u5B8C\u4E86\u5F8C\u3001\u30B9\u30C6\u30C3\u30D7 0 \u304B\u3089\u518D\u5B9F\u884C
|
|
91615
91661
|
|
|
91616
91662
|
## \u5236\u7D04
|
|
91617
91663
|
|
|
91618
91664
|
- \u4E0A\u8A18\u4EE5\u5916\u306E API \u547C\u3073\u51FA\u3057\u3092 setup \u4E2D\u306B\u884C\u308F\u306A\u3044
|
|
91619
91665
|
- \u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u306E\u9593\u306F 1 \u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057`,
|
|
91620
|
-
en: `Set up the Google Calendar connection. Ask the user how they want to access calendars
|
|
91666
|
+
en: `Set up the Google Calendar connection. Ask the user how they want to access calendars and record the target calendars in Project Knowledge.
|
|
91667
|
+
|
|
91668
|
+
## Step 0: Get the service account email
|
|
91669
|
+
|
|
91670
|
+
We need the service account email so we can show it to the user in the next steps.
|
|
91671
|
+
|
|
91672
|
+
Call \`${requestToolName}\` once and remember the \`serviceAccountEmail\` from the response:
|
|
91673
|
+
- \`method\`: \`"GET"\`
|
|
91674
|
+
- \`path\`: \`"/users/me/calendarList"\`
|
|
91675
|
+
- \`scopes\`: \`${READONLY_SCOPES}\`
|
|
91676
|
+
|
|
91677
|
+
\`serviceAccountEmail\` is returned regardless of success or failure, so the list payload itself can be ignored at this stage. Refer to the captured value as \`<serviceAccountEmail>\` in the steps below.
|
|
91621
91678
|
|
|
91622
91679
|
## Step 1: Choose the access method
|
|
91623
91680
|
|
|
@@ -91629,50 +91686,58 @@ Call \`askUserQuestion\`:
|
|
|
91629
91686
|
- \`{ label: "Calendars of users in your organization (via Domain-wide Delegation)", value: "delegation" }\`
|
|
91630
91687
|
- \`{ label: "Both", value: "both" }\`
|
|
91631
91688
|
|
|
91632
|
-
## Step 2:
|
|
91689
|
+
## Step 2: Service-account path (when \`"service-account"\` or \`"both"\`)
|
|
91690
|
+
|
|
91691
|
+
Take calendar IDs that the user has already shared with \`<serviceAccountEmail>\`, and verify each one. No multiSelect step (the user has already specified which calendars to use by entering their IDs).
|
|
91692
|
+
|
|
91693
|
+
1. Ask the user for calendar IDs:
|
|
91694
|
+
- \`type\`: \`"freeText"\`
|
|
91695
|
+
- \`question\`: "Enter the IDs of the calendars you want to access (comma-separated for multiple). Each calendar must already be shared with \`<serviceAccountEmail>\`. For someone's primary calendar you can enter their email address directly. For other calendars (such as team calendars), copy the 'Calendar ID' from the calendar settings in Google Calendar."
|
|
91696
|
+
- \`placeholder\`: \`"alice@example.com, c_xxx@group.calendar.google.com"\`
|
|
91633
91697
|
|
|
91634
|
-
|
|
91698
|
+
2. For each calendar ID \`<id>\`, verify access by calling \`${requestToolName}\`:
|
|
91635
91699
|
- \`method\`: \`"GET"\`
|
|
91636
|
-
- \`path\`: \`"/
|
|
91700
|
+
- \`path\`: \`"/calendars/<id>"\`
|
|
91637
91701
|
- \`scopes\`: \`${READONLY_SCOPES}\`
|
|
91702
|
+
- On success, capture \`data.summary\` as the calendar name
|
|
91703
|
+
- On failure (404 / 403 / etc.), record the ID as inaccessible
|
|
91638
91704
|
|
|
91639
|
-
|
|
91640
|
-
-
|
|
91641
|
-
-
|
|
91642
|
-
|
|
91643
|
-
|
|
91644
|
-
- \`options\`: For each calendar, \`label\`: \`"<calendar name>"\`, \`value\`: \`"<calendarId>"\`
|
|
91705
|
+
3. Branch on the results:
|
|
91706
|
+
- **All IDs failed**: if the access method is \`"service-account"\` only, jump to Step 5. If \`"both"\`, continue to Step 3.
|
|
91707
|
+
- **Any success**: take the verified calendars as the selection for Step 4. If some failed, mention them briefly in one sentence.
|
|
91708
|
+
|
|
91709
|
+
## Step 3: Domain-wide Delegation path (when \`"delegation"\` or \`"both"\`)
|
|
91645
91710
|
|
|
91646
|
-
|
|
91711
|
+
Discover calendars from each Workspace user and let the user narrow them down.
|
|
91647
91712
|
|
|
91648
|
-
1. Ask the user for target emails:
|
|
91713
|
+
1. Ask the user for the target Workspace user emails:
|
|
91649
91714
|
- \`type\`: \`"freeText"\`
|
|
91650
|
-
- \`question\`: "Enter the email addresses of the Google Workspace users whose calendars you want to access (comma-separated for multiple). Your Workspace admin must have authorized Domain-wide Delegation for
|
|
91715
|
+
- \`question\`: "Enter the email addresses of the Google Workspace users whose calendars you want to access (comma-separated for multiple). Your Workspace admin must have authorized Domain-wide Delegation for service account \`<serviceAccountEmail>\` in advance ([admin setup guide](https://support.google.com/a/answer/162106))."
|
|
91651
91716
|
- \`placeholder\`: \`"alice@example.com, bob@example.com"\`
|
|
91652
91717
|
|
|
91653
|
-
2.
|
|
91718
|
+
2. For each email \`<email>\`, list calendars accessible to that user via \`${requestWithDelegationToolName}\`:
|
|
91654
91719
|
- \`method\`: \`"GET"\`
|
|
91655
91720
|
- \`path\`: \`"/users/me/calendarList"\`
|
|
91656
91721
|
- \`subject\`: \`<email>\`
|
|
91657
91722
|
- \`scopes\`: \`${READONLY_SCOPES}\`
|
|
91658
91723
|
|
|
91659
91724
|
3. Branch on the results:
|
|
91660
|
-
- All emails failed
|
|
91661
|
-
- Any success
|
|
91725
|
+
- **All emails failed**: if the access method is \`"delegation"\` only, or \`"both"\` with no calendars from Step 2, jump to Step 5. If \`"both"\` and Step 2 had calendars, continue to Step 4.
|
|
91726
|
+
- **Any success**: ask the user to narrow down via \`askUserQuestion\`:
|
|
91662
91727
|
- \`type\`: \`"multiSelect"\`
|
|
91663
91728
|
- \`question\`: "Select the calendars to use (multiple allowed)"
|
|
91664
|
-
- \`options\`: For each calendar, \`label\`: \`"<calendar name> (owner: <the subject used>)"\`, \`value\`: \`"<calendarId>"\`
|
|
91665
|
-
- If some emails failed, mention
|
|
91729
|
+
- \`options\`: For each discovered calendar, \`label\`: \`"<calendar name> (owner: <the subject used>)"\`, \`value\`: \`"<calendarId>"\`
|
|
91730
|
+
- If some emails failed, mention them briefly in one sentence.
|
|
91666
91731
|
|
|
91667
91732
|
## Step 4: Record in Project Knowledge
|
|
91668
91733
|
|
|
91669
|
-
Aggregate the calendarIds
|
|
91734
|
+
Aggregate the calendarIds from Steps 2 and 3. Cross-reference each calendarId against the verification result (Step 2) or the discovery result (Step 3) to recover its access path and, for delegation, the subject. Call \`finalizeSetup\`. Under \`#### \u30B9\u30B3\u30FC\u30D7\` in \`projectKnowledge\`, list each calendar on its own line:
|
|
91670
91735
|
- Via Domain-wide Delegation: \`- calendar: <calendarId> (delegation, subject: <subject>, name: "<calendar name>")\`
|
|
91671
91736
|
- Via service account: \`- calendar: <calendarId> (service-account, name: "<calendar name>")\`
|
|
91672
91737
|
|
|
91673
91738
|
## Step 5: Escalation when zero calendars are selected
|
|
91674
91739
|
|
|
91675
|
-
|
|
91740
|
+
When no calendars end up selected, call \`askUserQuestion\`:
|
|
91676
91741
|
|
|
91677
91742
|
- \`question\`: "No accessible calendars found. Please do one of the following before continuing. Service account: \`<serviceAccountEmail>\`."
|
|
91678
91743
|
- \`options\`: Combine these based on which paths were attempted:
|
|
@@ -91682,11 +91747,11 @@ If the final selected calendar set is empty (every attempted path returned nothi
|
|
|
91682
91747
|
- Always: \`{ label: "Use a different service account", value: "change-service-account" }\`
|
|
91683
91748
|
|
|
91684
91749
|
Behavior per selection:
|
|
91685
|
-
- "retry": re-probe the path that was just attempted (
|
|
91750
|
+
- "retry": re-probe the path that was just attempted (the agent decides the exact retry plan)
|
|
91686
91751
|
- "restart": re-run from Step 1
|
|
91687
91752
|
- "change-service-account": call \`updateConnectionParameters\` to have the user re-upload the service account JSON:
|
|
91688
91753
|
- \`parameterSlug\`: \`"${SERVICE_ACCOUNT_KEY_PARAM_SLUG}"\`
|
|
91689
|
-
- After it completes, re-run from Step
|
|
91754
|
+
- After it completes, re-run from Step 0
|
|
91690
91755
|
|
|
91691
91756
|
## Constraints
|
|
91692
91757
|
|
|
@@ -91728,6 +91793,7 @@ var googleCalendarConnector = new ConnectorPlugin({
|
|
|
91728
91793
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2YsqoBEpdELmfDeFcyGHyE/4494c633b5ae15e562cb739cd85442c1/google-calendar.png",
|
|
91729
91794
|
parameters: parameters14,
|
|
91730
91795
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
91796
|
+
categories: ["productivity"],
|
|
91731
91797
|
onboarding: googleCalendarOnboarding,
|
|
91732
91798
|
systemPrompt: {
|
|
91733
91799
|
en: `### Tools
|
|
@@ -92232,6 +92298,7 @@ var googleCalendarOauthConnector = new ConnectorPlugin({
|
|
|
92232
92298
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2YsqoBEpdELmfDeFcyGHyE/4494c633b5ae15e562cb739cd85442c1/google-calendar.png",
|
|
92233
92299
|
parameters: parameters15,
|
|
92234
92300
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
92301
|
+
categories: ["productivity"],
|
|
92235
92302
|
onboarding: googleCalendarOauthOnboarding,
|
|
92236
92303
|
proxyPolicy: {
|
|
92237
92304
|
allowlist: [
|
|
@@ -92538,6 +92605,7 @@ var googleDocsConnector = new ConnectorPlugin({
|
|
|
92538
92605
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6vvcGJisvXjOumeTvswjzf/e9bb39e453cc0b71a20f26019b23b0d2/google_docs.png",
|
|
92539
92606
|
parameters: parameters16,
|
|
92540
92607
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
92608
|
+
categories: ["productivity"],
|
|
92541
92609
|
onboarding: googleDocsOnboarding,
|
|
92542
92610
|
proxyPolicy: {
|
|
92543
92611
|
allowlist: [
|
|
@@ -92829,6 +92897,7 @@ var googleDriveConnector = new ConnectorPlugin({
|
|
|
92829
92897
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4GJX5yQTogUgar1buWxXbv/4b43a65353319c508111489f834d22c4/google_drive.png",
|
|
92830
92898
|
parameters: parameters17,
|
|
92831
92899
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
92900
|
+
categories: ["productivity"],
|
|
92832
92901
|
onboarding: googleDriveOnboarding,
|
|
92833
92902
|
proxyPolicy: {
|
|
92834
92903
|
allowlist: [
|
|
@@ -93331,6 +93400,7 @@ var googleSheetsConnector = new ConnectorPlugin({
|
|
|
93331
93400
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1UPQuggyiZmbb26CuaSr2h/032770e8739b183fa00b7625f024e536/google-sheets.svg",
|
|
93332
93401
|
parameters: parameters18,
|
|
93333
93402
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
93403
|
+
categories: ["productivity"],
|
|
93334
93404
|
onboarding: googleSheetsOnboarding,
|
|
93335
93405
|
proxyPolicy: {
|
|
93336
93406
|
allowlist: [
|
|
@@ -93632,6 +93702,7 @@ var googleSlidesConnector = new ConnectorPlugin({
|
|
|
93632
93702
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4oyF4yTRpemMA43X49masx/e1582d25e3b4c9a63ba83df2147c1968/google_slide.png",
|
|
93633
93703
|
parameters: parameters19,
|
|
93634
93704
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
93705
|
+
categories: ["productivity"],
|
|
93635
93706
|
onboarding: googleSlidesOnboarding,
|
|
93636
93707
|
proxyPolicy: {
|
|
93637
93708
|
allowlist: [
|
|
@@ -93967,6 +94038,7 @@ var hubspotOauthConnector = new ConnectorPlugin({
|
|
|
93967
94038
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5UcSkKkzhUMA4RsM45ynuo/43b967e36915ca0fc5d277684b204320/hubspot.svg",
|
|
93968
94039
|
parameters: parameters20,
|
|
93969
94040
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
94041
|
+
categories: ["crm"],
|
|
93970
94042
|
onboarding: hubspotOnboarding,
|
|
93971
94043
|
proxyPolicy: {
|
|
93972
94044
|
allowlist: [
|
|
@@ -94256,6 +94328,7 @@ var stripeOauthConnector = new ConnectorPlugin({
|
|
|
94256
94328
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2QNK0u2doqp41uL0POS4Ks/7a92367e2388ec77c7f4ada143606f9a/stripe.jpeg",
|
|
94257
94329
|
parameters: parameters21,
|
|
94258
94330
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
94331
|
+
categories: ["finance"],
|
|
94259
94332
|
onboarding: stripeOnboarding,
|
|
94260
94333
|
proxyPolicy: {
|
|
94261
94334
|
allowlist: [
|
|
@@ -94543,6 +94616,7 @@ var stripeApiKeyConnector = new ConnectorPlugin({
|
|
|
94543
94616
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2QNK0u2doqp41uL0POS4Ks/7a92367e2388ec77c7f4ada143606f9a/stripe.jpeg",
|
|
94544
94617
|
parameters: parameters22,
|
|
94545
94618
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
94619
|
+
categories: ["finance"],
|
|
94546
94620
|
onboarding: stripeApiKeyOnboarding,
|
|
94547
94621
|
systemPrompt: {
|
|
94548
94622
|
en: `### Tools
|
|
@@ -94865,6 +94939,7 @@ var airtableOauthConnector = new ConnectorPlugin({
|
|
|
94865
94939
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19JUphfOZjyjTK6Zg4NGCf/8c56227b088cada52d3a2d9385a3be97/airtable.svg",
|
|
94866
94940
|
parameters: parameters23,
|
|
94867
94941
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
94942
|
+
categories: ["productivity"],
|
|
94868
94943
|
onboarding: airtableOauthOnboarding,
|
|
94869
94944
|
proxyPolicy: {
|
|
94870
94945
|
allowlist: [
|
|
@@ -95126,6 +95201,7 @@ var kintoneConnector = new ConnectorPlugin({
|
|
|
95126
95201
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/76nPGMJFZkMFE3UQNo2JFy/e71dc5f5d5cec1306ce0e17aafbfd9f0/kintone.png",
|
|
95127
95202
|
parameters: parameters24,
|
|
95128
95203
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
95204
|
+
categories: ["productivity"],
|
|
95129
95205
|
onboarding: kintoneOnboarding,
|
|
95130
95206
|
systemPrompt: {
|
|
95131
95207
|
en: `### Tools
|
|
@@ -95426,6 +95502,7 @@ var kintoneApiTokenConnector = new ConnectorPlugin({
|
|
|
95426
95502
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/76nPGMJFZkMFE3UQNo2JFy/e71dc5f5d5cec1306ce0e17aafbfd9f0/kintone.png",
|
|
95427
95503
|
parameters: parameters25,
|
|
95428
95504
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
95505
|
+
categories: ["productivity"],
|
|
95429
95506
|
onboarding: kintoneApiTokenOnboarding,
|
|
95430
95507
|
systemPrompt: {
|
|
95431
95508
|
en: `### Tools
|
|
@@ -95701,6 +95778,7 @@ var wixStoreConnector = new ConnectorPlugin({
|
|
|
95701
95778
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/YyFxclQFzROIYpFam6vRK/e7e75d3feac49a1cc5e433c147216d23/Wix_logo_black.svg",
|
|
95702
95779
|
parameters: parameters26,
|
|
95703
95780
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
95781
|
+
categories: ["ecommerce"],
|
|
95704
95782
|
onboarding: wixStoreOnboarding,
|
|
95705
95783
|
systemPrompt: {
|
|
95706
95784
|
en: `### Tools
|
|
@@ -96002,6 +96080,7 @@ var dbtConnector = new ConnectorPlugin({
|
|
|
96002
96080
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4iT6ncXtdtHdkXexU0WgfZ/0367a38d245f2568eab5eb511f9ee692/dbt.png",
|
|
96003
96081
|
parameters: parameters27,
|
|
96004
96082
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
96083
|
+
categories: ["database"],
|
|
96005
96084
|
onboarding: dbtOnboarding,
|
|
96006
96085
|
systemPrompt: {
|
|
96007
96086
|
en: `### Tools
|
|
@@ -96336,6 +96415,7 @@ var squadbaseDbConnector = new ConnectorPlugin({
|
|
|
96336
96415
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/25y0XqMxIufeD3egWH3bEl/659b4ade405890654cfaf91c03a4b458/icon.svg",
|
|
96337
96416
|
parameters: parameters28,
|
|
96338
96417
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
96418
|
+
categories: ["database"],
|
|
96339
96419
|
onboarding: squadbaseDbOnboarding,
|
|
96340
96420
|
systemPrompt: {
|
|
96341
96421
|
en: `### Tools
|
|
@@ -96426,6 +96506,7 @@ var openaiConnector = new ConnectorPlugin({
|
|
|
96426
96506
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/53XJtCgUlW10x6i1X8xpxM/0bfd634069f1d74241296543cb20427a/openai.svg",
|
|
96427
96507
|
parameters: parameters29,
|
|
96428
96508
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
96509
|
+
categories: ["ai"],
|
|
96429
96510
|
systemPrompt: {
|
|
96430
96511
|
en: `### Business Logic
|
|
96431
96512
|
|
|
@@ -96500,6 +96581,7 @@ var geminiConnector = new ConnectorPlugin({
|
|
|
96500
96581
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6K2qZQZEQq90YENfrXy5my/c83c0c3815af0a97d29ee70f37215f01/gemini.png",
|
|
96501
96582
|
parameters: parameters30,
|
|
96502
96583
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
96584
|
+
categories: ["ai"],
|
|
96503
96585
|
systemPrompt: {
|
|
96504
96586
|
en: `### Business Logic
|
|
96505
96587
|
|
|
@@ -96568,6 +96650,7 @@ var anthropicConnector = new ConnectorPlugin({
|
|
|
96568
96650
|
iconUrl: "https://www.anthropic.com/images/icons/safari-pinned-tab.svg",
|
|
96569
96651
|
parameters: parameters31,
|
|
96570
96652
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
96653
|
+
categories: ["ai"],
|
|
96571
96654
|
systemPrompt: {
|
|
96572
96655
|
en: `### Business Logic
|
|
96573
96656
|
|
|
@@ -96764,6 +96847,7 @@ var amplitudeConnector = new ConnectorPlugin({
|
|
|
96764
96847
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2UBJSdRlFJaLq52WUCTBEB/308b59b374cf6c662ac70989860bffd7/amplitude-icon.svg",
|
|
96765
96848
|
parameters: parameters32,
|
|
96766
96849
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
96850
|
+
categories: ["marketing"],
|
|
96767
96851
|
onboarding: amplitudeOnboarding,
|
|
96768
96852
|
systemPrompt: {
|
|
96769
96853
|
en: `### Tools
|
|
@@ -97017,6 +97101,7 @@ var attioConnector = new ConnectorPlugin({
|
|
|
97017
97101
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2qqx99vvXJojUM3tSrSWPX/1e7c35e13da6b365b8b475c1effe568f/attio.svg",
|
|
97018
97102
|
parameters: parameters33,
|
|
97019
97103
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
97104
|
+
categories: ["crm"],
|
|
97020
97105
|
onboarding: attioOnboarding,
|
|
97021
97106
|
systemPrompt: {
|
|
97022
97107
|
en: `### Tools
|
|
@@ -97475,6 +97560,7 @@ var shopifyConnector = new ConnectorPlugin({
|
|
|
97475
97560
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/57KEjZCBskKgSxgKyU4Sm0/117d681a410f48dc36f97cdd9c0593c5/shopify-icon.svg",
|
|
97476
97561
|
parameters: parameters34,
|
|
97477
97562
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
97563
|
+
categories: ["ecommerce"],
|
|
97478
97564
|
onboarding: shopifyOnboarding,
|
|
97479
97565
|
systemPrompt: {
|
|
97480
97566
|
en: `### Tools
|
|
@@ -97787,6 +97873,7 @@ var shopifyOauthConnector = new ConnectorPlugin({
|
|
|
97787
97873
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/57KEjZCBskKgSxgKyU4Sm0/117d681a410f48dc36f97cdd9c0593c5/shopify-icon.svg",
|
|
97788
97874
|
parameters: parameters35,
|
|
97789
97875
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
97876
|
+
categories: ["ecommerce"],
|
|
97790
97877
|
onboarding: shopifyOauthOnboarding,
|
|
97791
97878
|
proxyPolicy: {
|
|
97792
97879
|
allowlist: [
|
|
@@ -98029,6 +98116,7 @@ var hubspotConnector = new ConnectorPlugin({
|
|
|
98029
98116
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5UcSkKkzhUMA4RsM45ynuo/43b967e36915ca0fc5d277684b204320/hubspot.svg",
|
|
98030
98117
|
parameters: parameters36,
|
|
98031
98118
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
98119
|
+
categories: ["crm"],
|
|
98032
98120
|
onboarding: hubspotOnboarding2,
|
|
98033
98121
|
systemPrompt: {
|
|
98034
98122
|
en: `### Tools
|
|
@@ -98297,6 +98385,7 @@ var jiraConnector = new ConnectorPlugin({
|
|
|
98297
98385
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5zt4yjb36szSPPkCECYlPL/bc3e7223dc84fb16a1cce53a80f5afcc/jira.png",
|
|
98298
98386
|
parameters: parameters37,
|
|
98299
98387
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
98388
|
+
categories: ["productivity"],
|
|
98300
98389
|
onboarding: jiraOnboarding,
|
|
98301
98390
|
systemPrompt: {
|
|
98302
98391
|
en: `### Tools
|
|
@@ -98572,6 +98661,7 @@ var linearConnector = new ConnectorPlugin({
|
|
|
98572
98661
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oR77h6TeniXGdmnp2P2LX/a2ac8630ae52d164363adb0c695d9f0b/linear.webp",
|
|
98573
98662
|
parameters: parameters38,
|
|
98574
98663
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
98664
|
+
categories: ["productivity"],
|
|
98575
98665
|
onboarding: linearOnboarding,
|
|
98576
98666
|
systemPrompt: {
|
|
98577
98667
|
en: `### Tools
|
|
@@ -98834,6 +98924,7 @@ var asanaConnector = new ConnectorPlugin({
|
|
|
98834
98924
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3eIdaoqzIIZs2Md0OoDJMf/2fa66e0841adb985da4d3120466f3ec4/asana-icon.png",
|
|
98835
98925
|
parameters: parameters39,
|
|
98836
98926
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
98927
|
+
categories: ["productivity"],
|
|
98837
98928
|
onboarding: asanaOnboarding,
|
|
98838
98929
|
systemPrompt: {
|
|
98839
98930
|
en: `### Tools
|
|
@@ -99159,6 +99250,7 @@ var clickhouseConnector = new ConnectorPlugin({
|
|
|
99159
99250
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/MencimqP92UmucqstLl51/d9f2b6160206f5454b26e223a763ab8f/clickhouse.png",
|
|
99160
99251
|
parameters: parameters40,
|
|
99161
99252
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
99253
|
+
categories: ["database"],
|
|
99162
99254
|
onboarding: clickhouseOnboarding,
|
|
99163
99255
|
systemPrompt: {
|
|
99164
99256
|
en: `### Tools
|
|
@@ -99567,6 +99659,7 @@ var mongodbConnector = new ConnectorPlugin({
|
|
|
99567
99659
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/48JSUx9HE6oSa9JrHGg2E1/12b4cac65924cac3641d4bafcef37dbe/mongodb-icon.webp",
|
|
99568
99660
|
parameters: parameters41,
|
|
99569
99661
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
99662
|
+
categories: ["database"],
|
|
99570
99663
|
onboarding: mongodbOnboarding,
|
|
99571
99664
|
systemPrompt: {
|
|
99572
99665
|
en: `### Tools
|
|
@@ -99751,6 +99844,7 @@ var notionConnector = new ConnectorPlugin({
|
|
|
99751
99844
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
|
|
99752
99845
|
parameters: parameters42,
|
|
99753
99846
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
99847
|
+
categories: ["productivity"],
|
|
99754
99848
|
onboarding: notionOnboarding,
|
|
99755
99849
|
systemPrompt: {
|
|
99756
99850
|
en: `### Tools
|
|
@@ -100061,6 +100155,7 @@ var notionOauthConnector = new ConnectorPlugin({
|
|
|
100061
100155
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
|
|
100062
100156
|
parameters: parameters43,
|
|
100063
100157
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
100158
|
+
categories: ["productivity"],
|
|
100064
100159
|
onboarding: notionOauthOnboarding,
|
|
100065
100160
|
proxyPolicy: {
|
|
100066
100161
|
allowlist: [
|
|
@@ -100427,6 +100522,7 @@ var metaAdsConnector = new ConnectorPlugin({
|
|
|
100427
100522
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2vyrgcvdf3jETIFXHtbteO/de7f3288e831c9f738e44cf1f961c3bd/meta-icon.webp",
|
|
100428
100523
|
parameters: parameters44,
|
|
100429
100524
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
100525
|
+
categories: ["marketing"],
|
|
100430
100526
|
onboarding: metaAdsOnboarding,
|
|
100431
100527
|
systemPrompt: {
|
|
100432
100528
|
en: `### Tools
|
|
@@ -100879,6 +100975,7 @@ var metaAdsOauthConnector = new ConnectorPlugin({
|
|
|
100879
100975
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2vyrgcvdf3jETIFXHtbteO/de7f3288e831c9f738e44cf1f961c3bd/meta-icon.webp",
|
|
100880
100976
|
parameters: parameters45,
|
|
100881
100977
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
100978
|
+
categories: ["marketing"],
|
|
100882
100979
|
onboarding: metaAdsOauthOnboarding,
|
|
100883
100980
|
proxyPolicy: {
|
|
100884
100981
|
allowlist: [
|
|
@@ -101347,6 +101444,7 @@ var tiktokAdsConnector = new ConnectorPlugin({
|
|
|
101347
101444
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/01jHuwvmhe4ts0wj23Hxpm/afac9fa50ac5b353927900a122e898ab/tiktok.webp",
|
|
101348
101445
|
parameters: parameters46,
|
|
101349
101446
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
101447
|
+
categories: ["marketing"],
|
|
101350
101448
|
onboarding: tiktokAdsOnboarding,
|
|
101351
101449
|
proxyPolicy: {
|
|
101352
101450
|
allowlist: [
|
|
@@ -101650,6 +101748,7 @@ var mailchimpConnector = new ConnectorPlugin({
|
|
|
101650
101748
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19Rac6B8eGiLpQb4lKMbG3/10f567f85572aeb16f2ee6aaa6602987/mailchimp.png",
|
|
101651
101749
|
parameters: parameters47,
|
|
101652
101750
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
101751
|
+
categories: ["marketing"],
|
|
101653
101752
|
onboarding: mailchimpOnboarding,
|
|
101654
101753
|
systemPrompt: {
|
|
101655
101754
|
en: `### Tools
|
|
@@ -102003,6 +102102,7 @@ var mailchimpOauthConnector = new ConnectorPlugin({
|
|
|
102003
102102
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19Rac6B8eGiLpQb4lKMbG3/10f567f85572aeb16f2ee6aaa6602987/mailchimp.png",
|
|
102004
102103
|
parameters: parameters48,
|
|
102005
102104
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
102105
|
+
categories: ["marketing"],
|
|
102006
102106
|
onboarding: mailchimpOauthOnboarding,
|
|
102007
102107
|
proxyPolicy: {
|
|
102008
102108
|
allowlist: [
|
|
@@ -102296,6 +102396,7 @@ var customerioConnector = new ConnectorPlugin({
|
|
|
102296
102396
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/nngohabT7oHDIgQYAVBpz/6f6c7662ef4692eb9869e3e69dd57114/customerio.png",
|
|
102297
102397
|
parameters: parameters49,
|
|
102298
102398
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
102399
|
+
categories: ["marketing"],
|
|
102299
102400
|
onboarding: customerioOnboarding,
|
|
102300
102401
|
systemPrompt: {
|
|
102301
102402
|
en: `### Tools
|
|
@@ -102517,7 +102618,8 @@ var outputSchema61 = z63.discriminatedUnion("success", [
|
|
|
102517
102618
|
z63.object({
|
|
102518
102619
|
success: z63.literal(true),
|
|
102519
102620
|
status: z63.number(),
|
|
102520
|
-
data: z63.record(z63.string(), z63.unknown())
|
|
102621
|
+
data: z63.record(z63.string(), z63.unknown()),
|
|
102622
|
+
serviceAccountEmail: z63.string()
|
|
102521
102623
|
}),
|
|
102522
102624
|
z63.object({
|
|
102523
102625
|
success: z63.literal(false),
|
|
@@ -102599,7 +102701,12 @@ var requestWithDelegationTool2 = new ConnectorTool({
|
|
|
102599
102701
|
serviceAccountEmail
|
|
102600
102702
|
};
|
|
102601
102703
|
}
|
|
102602
|
-
return {
|
|
102704
|
+
return {
|
|
102705
|
+
success: true,
|
|
102706
|
+
status: response.status,
|
|
102707
|
+
data,
|
|
102708
|
+
serviceAccountEmail
|
|
102709
|
+
};
|
|
102603
102710
|
} finally {
|
|
102604
102711
|
clearTimeout(timeout);
|
|
102605
102712
|
}
|
|
@@ -102694,6 +102801,7 @@ var gmailConnector = new ConnectorPlugin({
|
|
|
102694
102801
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4V3rfaSc1ksFIt2eHBNIwJ/7f3be41a154a6d96dcf229ed0e5858c9/Gmail_icon__2020_.svg.png",
|
|
102695
102802
|
parameters: parameters50,
|
|
102696
102803
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
102804
|
+
categories: ["productivity"],
|
|
102697
102805
|
onboarding: gmailOnboarding,
|
|
102698
102806
|
systemPrompt: {
|
|
102699
102807
|
en: `### Tools
|
|
@@ -103056,6 +103164,7 @@ var gmailOauthConnector = new ConnectorPlugin({
|
|
|
103056
103164
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4V3rfaSc1ksFIt2eHBNIwJ/7f3be41a154a6d96dcf229ed0e5858c9/Gmail_icon__2020_.svg.png",
|
|
103057
103165
|
parameters: parameters51,
|
|
103058
103166
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
103167
|
+
categories: ["productivity"],
|
|
103059
103168
|
onboarding: gmailOnboarding2,
|
|
103060
103169
|
proxyPolicy: {
|
|
103061
103170
|
allowlist: [
|
|
@@ -103256,11 +103365,424 @@ thread.messages.forEach(m => console.log(m.snippet));
|
|
|
103256
103365
|
}
|
|
103257
103366
|
});
|
|
103258
103367
|
|
|
103259
|
-
// ../connectors/src/connectors/
|
|
103368
|
+
// ../connectors/src/connectors/google-audit-log/tools/request-with-delegation.ts
|
|
103260
103369
|
import { z as z65 } from "zod";
|
|
103261
|
-
|
|
103262
|
-
|
|
103370
|
+
|
|
103371
|
+
// ../connectors/src/connectors/google-audit-log/parameters.ts
|
|
103372
|
+
var parameters52 = {
|
|
103373
|
+
serviceAccountKeyJsonBase64: new ParameterDefinition({
|
|
103374
|
+
slug: "service-account-key-json-base64",
|
|
103375
|
+
name: "Google Cloud Service Account JSON",
|
|
103376
|
+
description: "The service account JSON key. Domain-wide Delegation must be authorized in the Google Workspace admin console for the Admin SDK Reports API scopes (admin.reports.audit.readonly, admin.reports.usage.readonly). The Workspace admin user to impersonate is supplied per call as the `subject` argument.",
|
|
103377
|
+
envVarBaseKey: "GOOGLE_AUDIT_LOG_SERVICE_ACCOUNT_JSON_BASE64",
|
|
103378
|
+
type: "base64EncodedJson",
|
|
103379
|
+
secret: true,
|
|
103380
|
+
required: true
|
|
103381
|
+
})
|
|
103382
|
+
};
|
|
103383
|
+
|
|
103384
|
+
// ../connectors/src/connectors/google-audit-log/tools/request-with-delegation.ts
|
|
103385
|
+
var BASE_URL30 = "https://admin.googleapis.com/admin/reports/v1";
|
|
103263
103386
|
var REQUEST_TIMEOUT_MS48 = 6e4;
|
|
103387
|
+
function decodeServiceAccount4(keyJsonBase64) {
|
|
103388
|
+
const decoded = Buffer.from(keyJsonBase64, "base64").toString("utf-8");
|
|
103389
|
+
return JSON.parse(decoded);
|
|
103390
|
+
}
|
|
103391
|
+
var inputSchema63 = z65.object({
|
|
103392
|
+
toolUseIntent: z65.string().optional().describe(
|
|
103393
|
+
"Brief description of what you intend to accomplish with this tool call"
|
|
103394
|
+
),
|
|
103395
|
+
connectionId: z65.string().describe(
|
|
103396
|
+
"ID of the Google Audit Log (Admin SDK Reports) service account connection to use"
|
|
103397
|
+
),
|
|
103398
|
+
method: z65.enum(["GET"]).describe("HTTP method. Reports API is read-only."),
|
|
103399
|
+
path: z65.string().describe(
|
|
103400
|
+
"API path appended to https://admin.googleapis.com/admin/reports/v1. Examples: '/activity/users/all/applications/login', '/activity/users/{userKey}/applications/drive', '/usage/users/all/dates/2025-04-01', '/usage/dates/2025-04-01'."
|
|
103401
|
+
),
|
|
103402
|
+
subject: z65.string().describe(
|
|
103403
|
+
"Email of the Google Workspace admin user to impersonate via Domain-wide Delegation. The Reports API requires the impersonated user to have admin privileges in the Workspace."
|
|
103404
|
+
),
|
|
103405
|
+
scopes: z65.array(z65.string()).describe(
|
|
103406
|
+
"OAuth scopes the token must include. This connector is read-only \u2014 pass one or both of: ['https://www.googleapis.com/auth/admin.reports.audit.readonly'] (audit activities), ['https://www.googleapis.com/auth/admin.reports.usage.readonly'] (usage reports). For maximum coverage you can pass both."
|
|
103407
|
+
),
|
|
103408
|
+
queryParams: z65.record(z65.string(), z65.string()).optional().describe(
|
|
103409
|
+
"Query parameters to append to the URL (e.g., { startTime: '2025-04-01T00:00:00Z', endTime: '2025-04-30T23:59:59Z', maxResults: '100', pageToken: '...', eventName: 'login_success', filters: 'doc_type==document', parameters: 'accounts:num_users' })"
|
|
103410
|
+
)
|
|
103411
|
+
});
|
|
103412
|
+
var outputSchema63 = z65.discriminatedUnion("success", [
|
|
103413
|
+
z65.object({
|
|
103414
|
+
success: z65.literal(true),
|
|
103415
|
+
status: z65.number(),
|
|
103416
|
+
data: z65.record(z65.string(), z65.unknown()),
|
|
103417
|
+
serviceAccountEmail: z65.string()
|
|
103418
|
+
}),
|
|
103419
|
+
z65.object({
|
|
103420
|
+
success: z65.literal(false),
|
|
103421
|
+
error: z65.string(),
|
|
103422
|
+
serviceAccountEmail: z65.string().optional()
|
|
103423
|
+
})
|
|
103424
|
+
]);
|
|
103425
|
+
var requestWithDelegationTool3 = new ConnectorTool({
|
|
103426
|
+
name: "request_with_delegation",
|
|
103427
|
+
description: "Call the Google Workspace Admin SDK Reports API on behalf of the specified Workspace admin via Domain-wide Delegation. Read-only operations only. Pass `subject` as the admin user email and `scopes` as one or both of ['https://www.googleapis.com/auth/admin.reports.audit.readonly', 'https://www.googleapis.com/auth/admin.reports.usage.readonly']. Paths are relative to https://admin.googleapis.com/admin/reports/v1 (e.g., '/activity/users/all/applications/login', '/usage/users/all/dates/2025-04-01'). Requires Domain-wide Delegation to be authorized for the service account in the Workspace admin console.",
|
|
103428
|
+
inputSchema: inputSchema63,
|
|
103429
|
+
outputSchema: outputSchema63,
|
|
103430
|
+
async execute({ connectionId, method, path: path4, subject, scopes, queryParams }, connections) {
|
|
103431
|
+
const connection = connections.find((c6) => c6.id === connectionId);
|
|
103432
|
+
if (!connection) {
|
|
103433
|
+
return {
|
|
103434
|
+
success: false,
|
|
103435
|
+
error: `Connection ${connectionId} not found`
|
|
103436
|
+
};
|
|
103437
|
+
}
|
|
103438
|
+
const keyJsonBase64 = parameters52.serviceAccountKeyJsonBase64.getValue(connection);
|
|
103439
|
+
let serviceAccount;
|
|
103440
|
+
try {
|
|
103441
|
+
serviceAccount = decodeServiceAccount4(keyJsonBase64);
|
|
103442
|
+
} catch (err) {
|
|
103443
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
103444
|
+
return {
|
|
103445
|
+
success: false,
|
|
103446
|
+
error: `Failed to decode service account key: ${msg}`
|
|
103447
|
+
};
|
|
103448
|
+
}
|
|
103449
|
+
const serviceAccountEmail = serviceAccount.client_email;
|
|
103450
|
+
console.log(
|
|
103451
|
+
`[connector-request] google-audit-log/${connection.name}: ${method} ${path4} subject=${subject}`
|
|
103452
|
+
);
|
|
103453
|
+
try {
|
|
103454
|
+
const { GoogleAuth } = await import("google-auth-library");
|
|
103455
|
+
const auth = new GoogleAuth({
|
|
103456
|
+
credentials: {
|
|
103457
|
+
client_email: serviceAccount.client_email,
|
|
103458
|
+
private_key: serviceAccount.private_key
|
|
103459
|
+
},
|
|
103460
|
+
scopes,
|
|
103461
|
+
clientOptions: { subject }
|
|
103462
|
+
});
|
|
103463
|
+
const token = await auth.getAccessToken();
|
|
103464
|
+
if (!token) {
|
|
103465
|
+
return {
|
|
103466
|
+
success: false,
|
|
103467
|
+
error: "Failed to obtain access token",
|
|
103468
|
+
serviceAccountEmail
|
|
103469
|
+
};
|
|
103470
|
+
}
|
|
103471
|
+
let url = `${BASE_URL30}${path4.startsWith("/") ? "" : "/"}${path4}`;
|
|
103472
|
+
if (queryParams) {
|
|
103473
|
+
const searchParams = new URLSearchParams(queryParams);
|
|
103474
|
+
url += `?${searchParams.toString()}`;
|
|
103475
|
+
}
|
|
103476
|
+
const controller = new AbortController();
|
|
103477
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS48);
|
|
103478
|
+
try {
|
|
103479
|
+
const response = await fetch(url, {
|
|
103480
|
+
method,
|
|
103481
|
+
headers: {
|
|
103482
|
+
Authorization: `Bearer ${token}`,
|
|
103483
|
+
"Content-Type": "application/json"
|
|
103484
|
+
},
|
|
103485
|
+
signal: controller.signal
|
|
103486
|
+
});
|
|
103487
|
+
const data = await response.json().catch(() => ({}));
|
|
103488
|
+
if (!response.ok) {
|
|
103489
|
+
const errorObj = data?.error;
|
|
103490
|
+
const errorMessage = errorObj?.message ?? (typeof data?.message === "string" ? data.message : `HTTP ${response.status} ${response.statusText}`);
|
|
103491
|
+
return {
|
|
103492
|
+
success: false,
|
|
103493
|
+
error: errorMessage,
|
|
103494
|
+
serviceAccountEmail
|
|
103495
|
+
};
|
|
103496
|
+
}
|
|
103497
|
+
return {
|
|
103498
|
+
success: true,
|
|
103499
|
+
status: response.status,
|
|
103500
|
+
data,
|
|
103501
|
+
serviceAccountEmail
|
|
103502
|
+
};
|
|
103503
|
+
} finally {
|
|
103504
|
+
clearTimeout(timeout);
|
|
103505
|
+
}
|
|
103506
|
+
} catch (err) {
|
|
103507
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
103508
|
+
return {
|
|
103509
|
+
success: false,
|
|
103510
|
+
error: msg,
|
|
103511
|
+
serviceAccountEmail
|
|
103512
|
+
};
|
|
103513
|
+
}
|
|
103514
|
+
}
|
|
103515
|
+
});
|
|
103516
|
+
|
|
103517
|
+
// ../connectors/src/connectors/google-audit-log/setup.ts
|
|
103518
|
+
var requestWithDelegationToolName3 = `google-audit-log-service-account_${requestWithDelegationTool3.name}`;
|
|
103519
|
+
var READONLY_SCOPES3 = '["https://www.googleapis.com/auth/admin.reports.audit.readonly", "https://www.googleapis.com/auth/admin.reports.usage.readonly"]';
|
|
103520
|
+
var googleAuditLogOnboarding = new ConnectorOnboarding({
|
|
103521
|
+
connectionSetupInstructions: {
|
|
103522
|
+
ja: `Google Audit Log\uFF08\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\uFF09\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3044\u307E\u3059\u3002Reports API \u306F Workspace \u7BA1\u7406\u8005\u6A29\u9650\u3092\u6301\u3064\u30E6\u30FC\u30B6\u30FC\u306B\u306A\u308A\u3059\u307E\u3057\u3066\u547C\u3073\u51FA\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30A2\u30AF\u30BB\u30B9\u306B\u4F7F\u3046\u7BA1\u7406\u8005\u30E6\u30FC\u30B6\u30FC\u3092\u30E6\u30FC\u30B6\u30FC\u304B\u3089\u805E\u304D\u3001Project Knowledge \u306B\u8A18\u9332\u3057\u307E\u3059\u3002
|
|
103523
|
+
|
|
103524
|
+
1. \`askUserQuestion\` \u3067\u5BFE\u8C61\u306E Workspace \u7BA1\u7406\u8005\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u805E\u304F:
|
|
103525
|
+
- \`type\`: \`"freeText"\`
|
|
103526
|
+
- \`question\`: \u300CAudit Log / Usage Report \u306E\u53D6\u5F97\u306B\u4F7F\u3046 Google Workspace \u7BA1\u7406\u8005\u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u53EF\u3001\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002Reports API \u3078\u306E\u6A29\u9650\u3092\u6301\u3064\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u300D
|
|
103527
|
+
- \`placeholder\`: \`"admin@example.com"\`
|
|
103528
|
+
|
|
103529
|
+
2. \u30E6\u30FC\u30B6\u30FC\u304B\u3089\u53D7\u3051\u53D6\u3063\u305F\u6587\u5B57\u5217\u304B\u3089\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u62BD\u51FA\u3059\u308B\u3002\u5404 \`<email>\` \u306B\u3064\u3044\u3066 \`${requestWithDelegationToolName3}\` \u3092\u4EE5\u4E0B\u306E\u5F15\u6570\u3067\u547C\u3073\u3001Domain-wide Delegation \u7D4C\u7531\u3067\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u304B\u3092\u78BA\u8A8D\u3059\u308B:
|
|
103530
|
+
- \`method\`: \`"GET"\`
|
|
103531
|
+
- \`path\`: \`"/activity/users/all/applications/login"\`
|
|
103532
|
+
- \`subject\`: \`<email>\`
|
|
103533
|
+
- \`scopes\`: \`${READONLY_SCOPES3}\`
|
|
103534
|
+
- \`queryParams\`: \`{ "maxResults": "1" }\`
|
|
103535
|
+
|
|
103536
|
+
3. \u5931\u6557\u3057\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u3042\u308C\u3070\u3001\u30A8\u30E9\u30FC\u30EC\u30B9\u30DD\u30F3\u30B9\u306E \`serviceAccountEmail\` \u30D5\u30A3\u30FC\u30EB\u30C9\u304B\u3089\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u53D6\u308A\u51FA\u3057\u3001\`askUserQuestion\` \u3067\u6B21\u306E\u9078\u629E\u80A2\u3092\u63D0\u793A\u3059\u308B\u3002\`question\` \u306B\u306F\u6B21\u306E\u6848\u5185\u6587\u3092\u542B\u3081\u308B: \u300C\u6B21\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3067\u306F Reports API \u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: {\u5931\u6557\u30A2\u30C9\u30EC\u30B9\u4E00\u89A7}\u3002\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8 \`<serviceAccountEmail>\` \u306E Domain-wide Delegation \u304C Workspace \u7BA1\u7406\u30B3\u30F3\u30BD\u30FC\u30EB\u3067\u627F\u8A8D\u3055\u308C\u3066\u304A\u308A\u3001\u5BFE\u8C61\u30B9\u30B3\u30FC\u30D7\uFF08\`admin.reports.audit.readonly\`, \`admin.reports.usage.readonly\`\uFF09\u304C\u6709\u52B9\u5316\u3055\u308C\u3066\u3044\u308B\u304B\u3001\u307E\u305F\u6307\u5B9A\u3057\u305F\u30E6\u30FC\u30B6\u30FC\u304C Workspace \u306E\u7BA1\u7406\u8005\u30ED\u30FC\u30EB\u3092\u6301\u3063\u3066\u3044\u308B\u304B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08[\u8A2D\u5B9A\u30AC\u30A4\u30C9](https://support.google.com/a/answer/162106)\uFF09\u300D\u3002
|
|
103537
|
+
- \`options\`: \`[{ label: "\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u3092\u627F\u8A8D\u3057\u305F\u306E\u3067\u30EA\u30C8\u30E9\u30A4", value: "retry" }, { label: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u76F4\u3059", value: "restart" }]\`
|
|
103538
|
+
- \u300C\u30EA\u30C8\u30E9\u30A4\u300D: \u76F4\u524D\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30EA\u30B9\u30C8\u3067\u30B9\u30C6\u30C3\u30D7 2 \u3092\u518D\u5B9F\u884C
|
|
103539
|
+
- \u300C\u5165\u529B\u3057\u76F4\u3059\u300D: \u30B9\u30C6\u30C3\u30D7 1 \u304B\u3089\u518D\u5B9F\u884C
|
|
103540
|
+
|
|
103541
|
+
4. \u5168\u30A2\u30C9\u30EC\u30B9\u304C\u6210\u529F\u3057\u305F\u3089 \`finalizeSetup\` \u3092\u547C\u3076\u3002\`projectKnowledge\` \u306E \`#### \u30B9\u30B3\u30FC\u30D7\` \u7BC0\u306B\u5404\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092 1 \u884C\u305A\u3064\u5217\u6319\u3059\u308B:
|
|
103542
|
+
- \`- subject: admin@example.com\`
|
|
103543
|
+
|
|
103544
|
+
#### \u5236\u7D04
|
|
103545
|
+
- \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u53D6\u5F97\u3057\u305F\u76E3\u67FB\u30ED\u30B0\u672C\u6587\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068\u3002\u8A31\u53EF\u3055\u308C\u3066\u3044\u308B\u306E\u306F\u30B9\u30C6\u30C3\u30D7 2 \u306E\u30A2\u30AF\u30BB\u30B9\u78BA\u8A8D\u306E\u307F
|
|
103546
|
+
- \u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u306E\u9593\u306F 1 \u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057`,
|
|
103547
|
+
en: `Set up the Google Audit Log (Service Account) connection. The Reports API requires impersonating a user with Workspace admin privileges. Ask the user which admin user(s) to access, verify each via Domain-wide Delegation, and record them in Project Knowledge.
|
|
103548
|
+
|
|
103549
|
+
1. Call \`askUserQuestion\` to collect target admin emails:
|
|
103550
|
+
- \`type\`: \`"freeText"\`
|
|
103551
|
+
- \`question\`: "Enter the Google Workspace admin user email(s) to use for Audit Log / Usage Report access (comma-separated for multiple). The account must have the necessary admin privileges for the Reports API."
|
|
103552
|
+
- \`placeholder\`: \`"admin@example.com"\`
|
|
103553
|
+
|
|
103554
|
+
2. Extract individual emails from the response. For each \`<email>\`, verify Domain-wide Delegation access by calling \`${requestWithDelegationToolName3}\`:
|
|
103555
|
+
- \`method\`: \`"GET"\`
|
|
103556
|
+
- \`path\`: \`"/activity/users/all/applications/login"\`
|
|
103557
|
+
- \`subject\`: \`<email>\`
|
|
103558
|
+
- \`scopes\`: \`${READONLY_SCOPES3}\`
|
|
103559
|
+
- \`queryParams\`: \`{ "maxResults": "1" }\`
|
|
103560
|
+
|
|
103561
|
+
3. For any failed email, take \`serviceAccountEmail\` from the error response and call \`askUserQuestion\`. Include this guidance in \`question\`: "Could not access the Reports API for {failed emails}. Verify that Domain-wide Delegation for service account \`<serviceAccountEmail>\` is authorized in the Workspace admin console with the scopes \`admin.reports.audit.readonly\` and \`admin.reports.usage.readonly\`, and that the impersonated user has a Workspace admin role ([setup guide](https://support.google.com/a/answer/162106))".
|
|
103562
|
+
- \`options\`: \`[{ label: "Authorized Domain-wide Delegation \u2014 retry", value: "retry" }, { label: "Re-enter the email addresses", value: "restart" }]\`
|
|
103563
|
+
- On "retry" \u2192 re-run step 2 with the previously entered email list
|
|
103564
|
+
- On "Re-enter" \u2192 re-run step 1
|
|
103565
|
+
|
|
103566
|
+
4. Once every email succeeds, call \`finalizeSetup\`. Under \`#### \u30B9\u30B3\u30FC\u30D7\` in \`projectKnowledge\`, list each email on its own line:
|
|
103567
|
+
- \`- subject: admin@example.com\`
|
|
103568
|
+
|
|
103569
|
+
#### Constraints
|
|
103570
|
+
- Do NOT read audit log contents during setup. Only the access verification call in step 2 is permitted
|
|
103571
|
+
- Write at most 1 sentence between tool calls`
|
|
103572
|
+
},
|
|
103573
|
+
dataOverviewInstructions: {
|
|
103574
|
+
en: `Pick ONE admin email from \`#### \u30B9\u30B3\u30FC\u30D7\` (a \`- subject: <email>\` line) and use it as \`subject\` for every call below. Pass \`scopes: ${READONLY_SCOPES3}\` every time.
|
|
103575
|
+
|
|
103576
|
+
1. \`method=GET\`, \`path=/activity/users/all/applications/login\`, \`queryParams={ maxResults: "10" }\` to verify recent login activity events are available.
|
|
103577
|
+
2. \`method=GET\`, \`path=/activity/users/all/applications/admin\`, \`queryParams={ maxResults: "10" }\` to inspect recent admin console events.
|
|
103578
|
+
3. \`method=GET\`, \`path=/usage/dates/{YYYY-MM-DD}\` (use yesterday's date) to fetch a customer-level usage report sample.`,
|
|
103579
|
+
ja: `\`#### \u30B9\u30B3\u30FC\u30D7\` \u306E \`- subject: <email>\` \u884C\u304B\u3089 1 \u3064\u306E\u7BA1\u7406\u8005\u3092\u9078\u3073\u3001\u4EE5\u4E0B\u306E\u30B9\u30C6\u30C3\u30D7\u3067 \`subject\` \u5F15\u6570\u3068\u3057\u3066\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\`scopes\` \u306F\u6BCE\u56DE \`${READONLY_SCOPES3}\` \u3092\u6E21\u3057\u307E\u3059\u3002
|
|
103580
|
+
|
|
103581
|
+
1. \`method=GET\`\u3001\`path=/activity/users/all/applications/login\`\u3001\`queryParams={ maxResults: "10" }\` \u3067\u76F4\u8FD1\u306E\u30ED\u30B0\u30A4\u30F3\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u304C\u53D6\u5F97\u3067\u304D\u308B\u3053\u3068\u3092\u78BA\u8A8D
|
|
103582
|
+
2. \`method=GET\`\u3001\`path=/activity/users/all/applications/admin\`\u3001\`queryParams={ maxResults: "10" }\` \u3067\u76F4\u8FD1\u306E\u7BA1\u7406\u30B3\u30F3\u30BD\u30FC\u30EB\u64CD\u4F5C\u3092\u78BA\u8A8D
|
|
103583
|
+
3. \`method=GET\`\u3001\`path=/usage/dates/{YYYY-MM-DD}\`\uFF08\u524D\u65E5\u306E\u65E5\u4ED8\u3092\u4F7F\u7528\uFF09\u3067\u30AB\u30B9\u30BF\u30DE\u30FC\u5358\u4F4D\u306E\u5229\u7528\u30EC\u30DD\u30FC\u30C8\u30B5\u30F3\u30D7\u30EB\u3092\u53D6\u5F97`
|
|
103584
|
+
}
|
|
103585
|
+
});
|
|
103586
|
+
|
|
103587
|
+
// ../connectors/src/connectors/google-audit-log/index.ts
|
|
103588
|
+
var tools52 = { request_with_delegation: requestWithDelegationTool3 };
|
|
103589
|
+
var googleAuditLogConnector = new ConnectorPlugin({
|
|
103590
|
+
slug: "google-audit-log",
|
|
103591
|
+
authType: AUTH_TYPES.SERVICE_ACCOUNT,
|
|
103592
|
+
name: "Google Audit Log",
|
|
103593
|
+
description: "Connect to the Google Workspace Admin SDK Reports API for audit activities and usage reports using a service account with domain-wide delegation. Read-only.",
|
|
103594
|
+
iconUrl: "https://www.gstatic.com/images/branding/product/2x/admin_2020q4_48dp.png",
|
|
103595
|
+
parameters: parameters52,
|
|
103596
|
+
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
103597
|
+
categories: ["observability"],
|
|
103598
|
+
onboarding: googleAuditLogOnboarding,
|
|
103599
|
+
systemPrompt: {
|
|
103600
|
+
en: `### Tools
|
|
103601
|
+
|
|
103602
|
+
- \`google-audit-log-service-account_request_with_delegation\`: Call the Google Workspace Admin SDK Reports API on behalf of a Workspace admin via Domain-wide Delegation. Pass \`subject\` as the admin email; the token will be issued as that user. The set of admins this connection works with is recorded in the project knowledge under "#### \u30B9\u30B3\u30FC\u30D7" as \`- subject: <email>\` lines \u2014 read those and pick a subject before calling. Always pass \`scopes\`.
|
|
103603
|
+
|
|
103604
|
+
### OAuth Scopes (pass as \`scopes\` argument)
|
|
103605
|
+
|
|
103606
|
+
This connector is read-only. Pass one or both:
|
|
103607
|
+
|
|
103608
|
+
- \`https://www.googleapis.com/auth/admin.reports.audit.readonly\` \u2014 audit activity events (Activities API)
|
|
103609
|
+
- \`https://www.googleapis.com/auth/admin.reports.usage.readonly\` \u2014 usage reports (Customer/User Usage API)
|
|
103610
|
+
|
|
103611
|
+
The Workspace admin must have authorized these scopes for the service account in the Domain-wide Delegation settings, otherwise token issuance will fail with \`unauthorized_client\`. The impersonated \`subject\` user must also have an admin role with permission to view the relevant reports.
|
|
103612
|
+
|
|
103613
|
+
Per-endpoint reference: https://developers.google.com/admin-sdk/reports/v1/reference
|
|
103614
|
+
|
|
103615
|
+
### Reports API Reference
|
|
103616
|
+
|
|
103617
|
+
#### Activities (audit logs)
|
|
103618
|
+
- GET \`/activity/users/all/applications/{applicationName}\` \u2014 list activity events across all users for an application
|
|
103619
|
+
- GET \`/activity/users/{userKey}/applications/{applicationName}\` \u2014 list activity events for a specific user (\`userKey\` is the user's email or immutable ID)
|
|
103620
|
+
- GET \`/activity/users/all/applications/{applicationName}/watch\` \u2014 (not supported here, push notifications)
|
|
103621
|
+
|
|
103622
|
+
\`applicationName\` values include: \`access_transparency\`, \`admin\`, \`calendar\`, \`chat\`, \`chrome\`, \`context_aware_access\`, \`data_studio\`, \`drive\`, \`gcp\`, \`gplus\`, \`groups\`, \`groups_enterprise\`, \`jamboard\`, \`keep\`, \`login\`, \`meet\`, \`mobile\`, \`rules\`, \`saml\`, \`token\`, \`user_accounts\`, \`vault\`.
|
|
103623
|
+
|
|
103624
|
+
Common Activities query parameters (pass via \`queryParams\`):
|
|
103625
|
+
- \`startTime\` / \`endTime\` \u2014 ISO-8601 timestamps (e.g., \`2025-04-01T00:00:00Z\`)
|
|
103626
|
+
- \`eventName\` \u2014 filter by a specific event (e.g., \`login_success\`, \`login_failure\`, \`document_open\`)
|
|
103627
|
+
- \`filters\` \u2014 comma-separated event-parameter filters (e.g., \`doc_type==document\`)
|
|
103628
|
+
- \`actorIpAddress\` \u2014 filter by IP
|
|
103629
|
+
- \`maxResults\` \u2014 page size (default 1000)
|
|
103630
|
+
- \`pageToken\` \u2014 pagination token from previous response's \`nextPageToken\`
|
|
103631
|
+
|
|
103632
|
+
#### Usage reports
|
|
103633
|
+
- GET \`/usage/dates/{date}\` \u2014 customer-level usage on a specific date (\`YYYY-MM-DD\`)
|
|
103634
|
+
- GET \`/usage/users/all/dates/{date}\` \u2014 per-user usage on a specific date
|
|
103635
|
+
- GET \`/usage/users/{userKey}/dates/{date}\` \u2014 usage for a single user on a specific date
|
|
103636
|
+
|
|
103637
|
+
Common Usage query parameters:
|
|
103638
|
+
- \`parameters\` \u2014 comma-separated metric names (e.g., \`accounts:num_users,gmail:num_emails_received\`). See https://developers.google.com/admin-sdk/reports/v1/reference/usage-ref-appendix-a for the full list.
|
|
103639
|
+
- \`filters\` \u2014 filter expression on the same metric namespace
|
|
103640
|
+
- \`maxResults\` / \`pageToken\` \u2014 pagination
|
|
103641
|
+
|
|
103642
|
+
### Business Logic
|
|
103643
|
+
|
|
103644
|
+
The business logic type for this connector is "typescript". Write handler code using the connector SDK shown below. Do NOT access credentials directly from environment variables.
|
|
103645
|
+
|
|
103646
|
+
SDK methods (client created via \`connection(connectionId)\`):
|
|
103647
|
+
|
|
103648
|
+
- \`client.requestWithDelegation(path, { subject, scopes, init? })\` \u2014 call the Reports API as the impersonated Workspace admin. Pass the minimum scopes required.
|
|
103649
|
+
|
|
103650
|
+
The method returns a standard \`Response\`. Read the body with \`.json()\`. Same path conventions as the tool.
|
|
103651
|
+
|
|
103652
|
+
#### Example
|
|
103653
|
+
|
|
103654
|
+
\`\`\`ts
|
|
103655
|
+
import type { Context } from "hono";
|
|
103656
|
+
import { connection } from "@squadbase/vite-server/connectors/google-audit-log";
|
|
103657
|
+
|
|
103658
|
+
const reports = connection("<connectionId>");
|
|
103659
|
+
|
|
103660
|
+
const SUBJECT = "admin@example.com"; // pick from "#### \u30B9\u30B3\u30FC\u30D7" in project knowledge
|
|
103661
|
+
const AUDIT = ["https://www.googleapis.com/auth/admin.reports.audit.readonly"];
|
|
103662
|
+
|
|
103663
|
+
export default async function handler(c: Context) {
|
|
103664
|
+
const { startTime, endTime } = await c.req.json<{
|
|
103665
|
+
startTime: string;
|
|
103666
|
+
endTime: string;
|
|
103667
|
+
}>();
|
|
103668
|
+
|
|
103669
|
+
const params = new URLSearchParams({
|
|
103670
|
+
startTime,
|
|
103671
|
+
endTime,
|
|
103672
|
+
maxResults: "100",
|
|
103673
|
+
});
|
|
103674
|
+
const res = await reports.requestWithDelegation(
|
|
103675
|
+
\`/activity/users/all/applications/login?\${params}\`,
|
|
103676
|
+
{ subject: SUBJECT, scopes: AUDIT },
|
|
103677
|
+
);
|
|
103678
|
+
const data = (await res.json()) as { items?: { id: { time: string }; events?: { name: string }[]; actor?: { email?: string } }[] };
|
|
103679
|
+
|
|
103680
|
+
return c.json(
|
|
103681
|
+
(data.items ?? []).map((item) => ({
|
|
103682
|
+
time: item.id.time,
|
|
103683
|
+
actor: item.actor?.email,
|
|
103684
|
+
event: item.events?.[0]?.name,
|
|
103685
|
+
})),
|
|
103686
|
+
);
|
|
103687
|
+
}
|
|
103688
|
+
\`\`\``,
|
|
103689
|
+
ja: `### \u30C4\u30FC\u30EB
|
|
103690
|
+
|
|
103691
|
+
- \`google-audit-log-service-account_request_with_delegation\`: Domain-wide Delegation \u7D4C\u7531\u3067 Workspace \u7BA1\u7406\u8005\u306B\u306A\u308A\u3059\u307E\u3057\u3066 Google Workspace Admin SDK Reports API \u3092\u547C\u3073\u51FA\u3057\u307E\u3059\u3002\u4EE3\u7406\u5BFE\u8C61\u306E\u7BA1\u7406\u8005\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092 \`subject\` \u3068\u3057\u3066\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30C8\u30FC\u30AF\u30F3\u306F\u305D\u306E\u30E6\u30FC\u30B6\u30FC\u3068\u3057\u3066\u767A\u884C\u3055\u308C\u307E\u3059\u3002\u3053\u306E\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u304C\u5BFE\u8C61\u3068\u3059\u308B\u7BA1\u7406\u8005\u306F Project Knowledge \u306E "#### \u30B9\u30B3\u30FC\u30D7" \u306B \`- subject: <email>\` \u5F62\u5F0F\u3067\u8A18\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u547C\u3073\u51FA\u3057\u524D\u306B\u305D\u3053\u3092\u8AAD\u3093\u3067 subject \u3092\u6C7A\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\`scopes\` \u3082\u6BCE\u56DE\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
103692
|
+
|
|
103693
|
+
### OAuth \u30B9\u30B3\u30FC\u30D7 (\`scopes\` \u5F15\u6570\u3067\u6E21\u3059)
|
|
103694
|
+
|
|
103695
|
+
\u3053\u306E\u30B3\u30CD\u30AF\u30BF\u30FC\u306F\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u3067\u3059\u3002\u6B21\u306E\u3044\u305A\u308C\u304B\u3001\u307E\u305F\u306F\u4E21\u65B9\u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044:
|
|
103696
|
+
|
|
103697
|
+
- \`https://www.googleapis.com/auth/admin.reports.audit.readonly\` \u2014 \u76E3\u67FB\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30A4\u30D9\u30F3\u30C8 (Activities API)
|
|
103698
|
+
- \`https://www.googleapis.com/auth/admin.reports.usage.readonly\` \u2014 \u5229\u7528\u30EC\u30DD\u30FC\u30C8 (Customer/User Usage API)
|
|
103699
|
+
|
|
103700
|
+
\u8981\u6C42\u3059\u308B scope \u306F Workspace \u7BA1\u7406\u8005\u304C Domain-wide Delegation \u8A2D\u5B9A\u3067\u5F53\u8A72 Service Account \u306B\u5BFE\u3057\u3066\u627F\u8A8D\u3057\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u627F\u8A8D\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u30C8\u30FC\u30AF\u30F3\u767A\u884C\u304C \`unauthorized_client\` \u3067\u5931\u6557\u3057\u307E\u3059\u3002\u307E\u305F\u4EE3\u7406\u5BFE\u8C61\u306E \`subject\` \u30E6\u30FC\u30B6\u30FC\u304C\u8A72\u5F53\u30EC\u30DD\u30FC\u30C8\u3092\u95B2\u89A7\u3067\u304D\u308B\u7BA1\u7406\u8005\u30ED\u30FC\u30EB\u3092\u6301\u3063\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
|
103701
|
+
|
|
103702
|
+
\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u5225\u306E\u6B63\u78BA\u306A\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9: https://developers.google.com/admin-sdk/reports/v1/reference
|
|
103703
|
+
|
|
103704
|
+
### Reports API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
|
|
103705
|
+
|
|
103706
|
+
#### Activities\uFF08\u76E3\u67FB\u30ED\u30B0\uFF09
|
|
103707
|
+
- GET \`/activity/users/all/applications/{applicationName}\` \u2014 \u6307\u5B9A\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u3064\u3044\u3066\u5168\u30E6\u30FC\u30B6\u30FC\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30A4\u30D9\u30F3\u30C8\u3092\u4E00\u89A7
|
|
103708
|
+
- GET \`/activity/users/{userKey}/applications/{applicationName}\` \u2014 \u6307\u5B9A\u30E6\u30FC\u30B6\u30FC\uFF08\`userKey\` \u306F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u307E\u305F\u306F\u4E0D\u5909ID\uFF09\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3
|
|
103709
|
+
|
|
103710
|
+
\`applicationName\` \u306E\u5024: \`access_transparency\`, \`admin\`, \`calendar\`, \`chat\`, \`chrome\`, \`context_aware_access\`, \`data_studio\`, \`drive\`, \`gcp\`, \`gplus\`, \`groups\`, \`groups_enterprise\`, \`jamboard\`, \`keep\`, \`login\`, \`meet\`, \`mobile\`, \`rules\`, \`saml\`, \`token\`, \`user_accounts\`, \`vault\`\u3002
|
|
103711
|
+
|
|
103712
|
+
\u4E3B\u306A\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08\`queryParams\` \u306B\u6E21\u3059\uFF09:
|
|
103713
|
+
- \`startTime\` / \`endTime\` \u2014 ISO-8601 \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\uFF08\u4F8B: \`2025-04-01T00:00:00Z\`\uFF09
|
|
103714
|
+
- \`eventName\` \u2014 \u7279\u5B9A\u306E\u30A4\u30D9\u30F3\u30C8\u3067\u30D5\u30A3\u30EB\u30BF\uFF08\u4F8B: \`login_success\`, \`login_failure\`, \`document_open\`\uFF09
|
|
103715
|
+
- \`filters\` \u2014 \u30A4\u30D9\u30F3\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306E\u30D5\u30A3\u30EB\u30BF\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3001\u4F8B: \`doc_type==document\`\uFF09
|
|
103716
|
+
- \`actorIpAddress\` \u2014 IP\u30A2\u30C9\u30EC\u30B9\u3067\u30D5\u30A3\u30EB\u30BF
|
|
103717
|
+
- \`maxResults\` \u2014 \u30DA\u30FC\u30B8\u30B5\u30A4\u30BA\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8 1000\uFF09
|
|
103718
|
+
- \`pageToken\` \u2014 \u30EC\u30B9\u30DD\u30F3\u30B9\u306E \`nextPageToken\` \u3092\u6E21\u3057\u3066\u30DA\u30FC\u30B8\u30F3\u30B0
|
|
103719
|
+
|
|
103720
|
+
#### Usage\uFF08\u5229\u7528\u30EC\u30DD\u30FC\u30C8\uFF09
|
|
103721
|
+
- GET \`/usage/dates/{date}\` \u2014 \u6307\u5B9A\u65E5\uFF08\`YYYY-MM-DD\`\uFF09\u306E\u30AB\u30B9\u30BF\u30DE\u30FC\u5358\u4F4D\u306E\u5229\u7528\u30EC\u30DD\u30FC\u30C8
|
|
103722
|
+
- GET \`/usage/users/all/dates/{date}\` \u2014 \u6307\u5B9A\u65E5\u306E\u5168\u30E6\u30FC\u30B6\u30FC\u5229\u7528\u30EC\u30DD\u30FC\u30C8
|
|
103723
|
+
- GET \`/usage/users/{userKey}/dates/{date}\` \u2014 \u6307\u5B9A\u65E5\u306E\u7279\u5B9A\u30E6\u30FC\u30B6\u30FC\u306E\u5229\u7528\u30EC\u30DD\u30FC\u30C8
|
|
103724
|
+
|
|
103725
|
+
\u4E3B\u306A\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF:
|
|
103726
|
+
- \`parameters\` \u2014 \u53D6\u5F97\u3059\u308B\u30E1\u30C8\u30EA\u30AF\u30B9\u540D\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3001\u4F8B: \`accounts:num_users,gmail:num_emails_received\`\uFF09\u3002\u4E00\u89A7: https://developers.google.com/admin-sdk/reports/v1/reference/usage-ref-appendix-a
|
|
103727
|
+
- \`filters\` \u2014 \u30E1\u30C8\u30EA\u30AF\u30B9\u306B\u5BFE\u3059\u308B\u30D5\u30A3\u30EB\u30BF\u5F0F
|
|
103728
|
+
- \`maxResults\` / \`pageToken\` \u2014 \u30DA\u30FC\u30B8\u30F3\u30B0
|
|
103729
|
+
|
|
103730
|
+
### Business Logic
|
|
103731
|
+
|
|
103732
|
+
\u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u4EE5\u4E0B\u306B\u793A\u3059\u30B3\u30CD\u30AF\u30BFSDK\u3092\u4F7F\u7528\u3057\u3066\u30CF\u30F3\u30C9\u30E9\u30B3\u30FC\u30C9\u3092\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u76F4\u63A5\u8A8D\u8A3C\u60C5\u5831\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
|
|
103733
|
+
|
|
103734
|
+
SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
|
|
103735
|
+
|
|
103736
|
+
- \`client.requestWithDelegation(path, { subject, scopes, init? })\` \u2014 Domain-wide Delegation \u3067\u6307\u5B9A Workspace \u7BA1\u7406\u8005\u3068\u3057\u3066 Reports API \u3092\u547C\u3076\u3002\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u306B\u5FC5\u8981\u306A\u6700\u5C0F scope \u3092\u6E21\u3059\u3002
|
|
103737
|
+
|
|
103738
|
+
\u30E1\u30BD\u30C3\u30C9\u306F\u6A19\u6E96\u306E \`Response\` \u3092\u8FD4\u3057\u307E\u3059\u3002\`response.json()\` \u3067\u30DC\u30C7\u30A3\u3092\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30D1\u30B9\u306E\u66F8\u304D\u65B9\u306F\u30C4\u30FC\u30EB\u3068\u540C\u3058\u3002
|
|
103739
|
+
|
|
103740
|
+
#### Example
|
|
103741
|
+
|
|
103742
|
+
\`\`\`ts
|
|
103743
|
+
import type { Context } from "hono";
|
|
103744
|
+
import { connection } from "@squadbase/vite-server/connectors/google-audit-log";
|
|
103745
|
+
|
|
103746
|
+
const reports = connection("<connectionId>");
|
|
103747
|
+
|
|
103748
|
+
const SUBJECT = "admin@example.com"; // Project Knowledge \u306E "#### \u30B9\u30B3\u30FC\u30D7" \u304B\u3089\u9078\u3076
|
|
103749
|
+
const AUDIT = ["https://www.googleapis.com/auth/admin.reports.audit.readonly"];
|
|
103750
|
+
|
|
103751
|
+
export default async function handler(c: Context) {
|
|
103752
|
+
const { startTime, endTime } = await c.req.json<{
|
|
103753
|
+
startTime: string;
|
|
103754
|
+
endTime: string;
|
|
103755
|
+
}>();
|
|
103756
|
+
|
|
103757
|
+
const params = new URLSearchParams({
|
|
103758
|
+
startTime,
|
|
103759
|
+
endTime,
|
|
103760
|
+
maxResults: "100",
|
|
103761
|
+
});
|
|
103762
|
+
const res = await reports.requestWithDelegation(
|
|
103763
|
+
\`/activity/users/all/applications/login?\${params}\`,
|
|
103764
|
+
{ subject: SUBJECT, scopes: AUDIT },
|
|
103765
|
+
);
|
|
103766
|
+
const data = (await res.json()) as { items?: { id: { time: string }; events?: { name: string }[]; actor?: { email?: string } }[] };
|
|
103767
|
+
|
|
103768
|
+
return c.json(
|
|
103769
|
+
(data.items ?? []).map((item) => ({
|
|
103770
|
+
time: item.id.time,
|
|
103771
|
+
actor: item.actor?.email,
|
|
103772
|
+
event: item.events?.[0]?.name,
|
|
103773
|
+
})),
|
|
103774
|
+
);
|
|
103775
|
+
}
|
|
103776
|
+
\`\`\``
|
|
103777
|
+
},
|
|
103778
|
+
tools: tools52
|
|
103779
|
+
});
|
|
103780
|
+
|
|
103781
|
+
// ../connectors/src/connectors/linkedin-ads/tools/list-ad-accounts.ts
|
|
103782
|
+
import { z as z66 } from "zod";
|
|
103783
|
+
var BASE_URL31 = "https://api.linkedin.com/rest/";
|
|
103784
|
+
var LINKEDIN_VERSION = "202603";
|
|
103785
|
+
var REQUEST_TIMEOUT_MS49 = 6e4;
|
|
103264
103786
|
var cachedToken26 = null;
|
|
103265
103787
|
async function getProxyToken26(config) {
|
|
103266
103788
|
if (cachedToken26 && cachedToken26.expiresAt > Date.now() + 6e4) {
|
|
@@ -103292,32 +103814,32 @@ async function getProxyToken26(config) {
|
|
|
103292
103814
|
};
|
|
103293
103815
|
return data.token;
|
|
103294
103816
|
}
|
|
103295
|
-
var
|
|
103296
|
-
toolUseIntent:
|
|
103817
|
+
var inputSchema64 = z66.object({
|
|
103818
|
+
toolUseIntent: z66.string().optional().describe(
|
|
103297
103819
|
"Brief description of what you intend to accomplish with this tool call"
|
|
103298
103820
|
),
|
|
103299
|
-
connectionId:
|
|
103821
|
+
connectionId: z66.string().describe("ID of the LinkedIn Ads OAuth connection to use")
|
|
103300
103822
|
});
|
|
103301
|
-
var
|
|
103302
|
-
|
|
103303
|
-
success:
|
|
103304
|
-
adAccounts:
|
|
103305
|
-
|
|
103306
|
-
adAccountId:
|
|
103307
|
-
name:
|
|
103823
|
+
var outputSchema64 = z66.discriminatedUnion("success", [
|
|
103824
|
+
z66.object({
|
|
103825
|
+
success: z66.literal(true),
|
|
103826
|
+
adAccounts: z66.array(
|
|
103827
|
+
z66.object({
|
|
103828
|
+
adAccountId: z66.string(),
|
|
103829
|
+
name: z66.string()
|
|
103308
103830
|
})
|
|
103309
103831
|
)
|
|
103310
103832
|
}),
|
|
103311
|
-
|
|
103312
|
-
success:
|
|
103313
|
-
error:
|
|
103833
|
+
z66.object({
|
|
103834
|
+
success: z66.literal(false),
|
|
103835
|
+
error: z66.string()
|
|
103314
103836
|
})
|
|
103315
103837
|
]);
|
|
103316
103838
|
var listAdAccountsTool3 = new ConnectorTool({
|
|
103317
103839
|
name: "listAdAccounts",
|
|
103318
103840
|
description: "List LinkedIn ad accounts accessible with the current OAuth credentials.",
|
|
103319
|
-
inputSchema:
|
|
103320
|
-
outputSchema:
|
|
103841
|
+
inputSchema: inputSchema64,
|
|
103842
|
+
outputSchema: outputSchema64,
|
|
103321
103843
|
async execute({ connectionId }, connections, config) {
|
|
103322
103844
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
103323
103845
|
if (!connection) {
|
|
@@ -103333,7 +103855,7 @@ var listAdAccountsTool3 = new ConnectorTool({
|
|
|
103333
103855
|
const token = await getProxyToken26(config.oauthProxy);
|
|
103334
103856
|
const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
|
|
103335
103857
|
const controller = new AbortController();
|
|
103336
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
103858
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS49);
|
|
103337
103859
|
try {
|
|
103338
103860
|
const response = await fetch(proxyUrl, {
|
|
103339
103861
|
method: "POST",
|
|
@@ -103342,7 +103864,7 @@ var listAdAccountsTool3 = new ConnectorTool({
|
|
|
103342
103864
|
Authorization: `Bearer ${token}`
|
|
103343
103865
|
},
|
|
103344
103866
|
body: JSON.stringify({
|
|
103345
|
-
url: `${
|
|
103867
|
+
url: `${BASE_URL31}adAccounts?q=search&search=(status:(values:List(ACTIVE)))&pageSize=100`,
|
|
103346
103868
|
method: "GET",
|
|
103347
103869
|
headers: {
|
|
103348
103870
|
"LinkedIn-Version": LINKEDIN_VERSION,
|
|
@@ -103411,7 +103933,7 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
|
|
|
103411
103933
|
});
|
|
103412
103934
|
|
|
103413
103935
|
// ../connectors/src/connectors/linkedin-ads/parameters.ts
|
|
103414
|
-
var
|
|
103936
|
+
var parameters53 = {
|
|
103415
103937
|
adAccountId: new ParameterDefinition({
|
|
103416
103938
|
slug: "ad-account-id",
|
|
103417
103939
|
name: "Ad Account ID",
|
|
@@ -103424,10 +103946,10 @@ var parameters52 = {
|
|
|
103424
103946
|
};
|
|
103425
103947
|
|
|
103426
103948
|
// ../connectors/src/connectors/linkedin-ads/tools/request.ts
|
|
103427
|
-
import { z as
|
|
103428
|
-
var
|
|
103949
|
+
import { z as z67 } from "zod";
|
|
103950
|
+
var BASE_URL32 = "https://api.linkedin.com/rest/";
|
|
103429
103951
|
var LINKEDIN_VERSION2 = "202603";
|
|
103430
|
-
var
|
|
103952
|
+
var REQUEST_TIMEOUT_MS50 = 6e4;
|
|
103431
103953
|
var cachedToken27 = null;
|
|
103432
103954
|
async function getProxyToken27(config) {
|
|
103433
103955
|
if (cachedToken27 && cachedToken27.expiresAt > Date.now() + 6e4) {
|
|
@@ -103459,27 +103981,27 @@ async function getProxyToken27(config) {
|
|
|
103459
103981
|
};
|
|
103460
103982
|
return data.token;
|
|
103461
103983
|
}
|
|
103462
|
-
var
|
|
103463
|
-
toolUseIntent:
|
|
103984
|
+
var inputSchema65 = z67.object({
|
|
103985
|
+
toolUseIntent: z67.string().optional().describe(
|
|
103464
103986
|
"Brief description of what you intend to accomplish with this tool call"
|
|
103465
103987
|
),
|
|
103466
|
-
connectionId:
|
|
103467
|
-
method:
|
|
103468
|
-
path:
|
|
103988
|
+
connectionId: z67.string().describe("ID of the LinkedIn Ads OAuth connection to use"),
|
|
103989
|
+
method: z67.enum(["GET", "POST", "DELETE"]).describe("HTTP method"),
|
|
103990
|
+
path: z67.string().describe(
|
|
103469
103991
|
"API path appended to https://api.linkedin.com/rest/ (e.g., 'adAccounts/{adAccountId}/adCampaigns'). {adAccountId} is automatically replaced with the connection's ad account ID."
|
|
103470
103992
|
),
|
|
103471
|
-
queryParams:
|
|
103472
|
-
body:
|
|
103993
|
+
queryParams: z67.record(z67.string(), z67.string()).optional().describe("Query parameters to append to the URL"),
|
|
103994
|
+
body: z67.record(z67.string(), z67.unknown()).optional().describe("Request body (JSON). For partial updates, use the patch format: { patch: { $set: { ... } } }")
|
|
103473
103995
|
});
|
|
103474
|
-
var
|
|
103475
|
-
|
|
103476
|
-
success:
|
|
103477
|
-
status:
|
|
103478
|
-
data:
|
|
103996
|
+
var outputSchema65 = z67.discriminatedUnion("success", [
|
|
103997
|
+
z67.object({
|
|
103998
|
+
success: z67.literal(true),
|
|
103999
|
+
status: z67.number(),
|
|
104000
|
+
data: z67.unknown()
|
|
103479
104001
|
}),
|
|
103480
|
-
|
|
103481
|
-
success:
|
|
103482
|
-
error:
|
|
104002
|
+
z67.object({
|
|
104003
|
+
success: z67.literal(false),
|
|
104004
|
+
error: z67.string()
|
|
103483
104005
|
})
|
|
103484
104006
|
]);
|
|
103485
104007
|
var requestTool36 = new ConnectorTool({
|
|
@@ -103488,8 +104010,8 @@ var requestTool36 = new ConnectorTool({
|
|
|
103488
104010
|
Authentication is handled automatically via OAuth proxy.
|
|
103489
104011
|
{adAccountId} in the path is automatically replaced with the connection's ad account ID.
|
|
103490
104012
|
Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatically.`,
|
|
103491
|
-
inputSchema:
|
|
103492
|
-
outputSchema:
|
|
104013
|
+
inputSchema: inputSchema65,
|
|
104014
|
+
outputSchema: outputSchema65,
|
|
103493
104015
|
async execute({ connectionId, method, path: path4, queryParams, body }, connections, config) {
|
|
103494
104016
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
103495
104017
|
if (!connection) {
|
|
@@ -103502,9 +104024,9 @@ Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatic
|
|
|
103502
104024
|
`[connector-request] linkedin-ads/${connection.name}: ${method} ${path4}`
|
|
103503
104025
|
);
|
|
103504
104026
|
try {
|
|
103505
|
-
const adAccountId =
|
|
104027
|
+
const adAccountId = parameters53.adAccountId.tryGetValue(connection) ?? "";
|
|
103506
104028
|
const resolvedPath = adAccountId ? path4.replace(/\{adAccountId\}/g, adAccountId) : path4;
|
|
103507
|
-
let url = `${
|
|
104029
|
+
let url = `${BASE_URL32}${resolvedPath}`;
|
|
103508
104030
|
if (queryParams && Object.keys(queryParams).length > 0) {
|
|
103509
104031
|
const params = new URLSearchParams(queryParams);
|
|
103510
104032
|
const separator = url.includes("?") ? "&" : "?";
|
|
@@ -103513,7 +104035,7 @@ Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatic
|
|
|
103513
104035
|
const token = await getProxyToken27(config.oauthProxy);
|
|
103514
104036
|
const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
|
|
103515
104037
|
const controller = new AbortController();
|
|
103516
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
104038
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS50);
|
|
103517
104039
|
try {
|
|
103518
104040
|
const additionalHeaders = {
|
|
103519
104041
|
"LinkedIn-Version": LINKEDIN_VERSION2,
|
|
@@ -103557,7 +104079,7 @@ Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatic
|
|
|
103557
104079
|
});
|
|
103558
104080
|
|
|
103559
104081
|
// ../connectors/src/connectors/linkedin-ads/index.ts
|
|
103560
|
-
var
|
|
104082
|
+
var tools53 = {
|
|
103561
104083
|
request: requestTool36,
|
|
103562
104084
|
listAdAccounts: listAdAccountsTool3
|
|
103563
104085
|
};
|
|
@@ -103567,8 +104089,9 @@ var linkedinAdsConnector = new ConnectorPlugin({
|
|
|
103567
104089
|
name: "LinkedIn Ads",
|
|
103568
104090
|
description: "Connect to LinkedIn Ads (Marketing API) for advertising campaign data and reporting using OAuth.",
|
|
103569
104091
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3x7xd9pVJkRFY7ADIg4ycq/b94720e34cb081e9ae45dfde799a59cd/LinkedIn_icon.svg.png",
|
|
103570
|
-
parameters:
|
|
104092
|
+
parameters: parameters53,
|
|
103571
104093
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
104094
|
+
categories: ["marketing"],
|
|
103572
104095
|
onboarding: linkedinAdsOnboarding,
|
|
103573
104096
|
proxyPolicy: {
|
|
103574
104097
|
allowlist: [
|
|
@@ -103766,7 +104289,7 @@ const res = await linkedin.request("adAccounts/{adAccountId}/adCampaigns?q=searc
|
|
|
103766
104289
|
const data = await res.json();
|
|
103767
104290
|
\`\`\``
|
|
103768
104291
|
},
|
|
103769
|
-
tools:
|
|
104292
|
+
tools: tools53,
|
|
103770
104293
|
async checkConnection(_params, config) {
|
|
103771
104294
|
const { proxyFetch } = config;
|
|
103772
104295
|
try {
|
|
@@ -103810,7 +104333,7 @@ var zendeskOnboarding = new ConnectorOnboarding({
|
|
|
103810
104333
|
});
|
|
103811
104334
|
|
|
103812
104335
|
// ../connectors/src/connectors/zendesk/parameters.ts
|
|
103813
|
-
var
|
|
104336
|
+
var parameters54 = {
|
|
103814
104337
|
subdomain: new ParameterDefinition({
|
|
103815
104338
|
slug: "subdomain",
|
|
103816
104339
|
name: "Zendesk Subdomain",
|
|
@@ -103841,30 +104364,30 @@ var parameters53 = {
|
|
|
103841
104364
|
};
|
|
103842
104365
|
|
|
103843
104366
|
// ../connectors/src/connectors/zendesk/tools/request.ts
|
|
103844
|
-
import { z as
|
|
103845
|
-
var
|
|
103846
|
-
var
|
|
103847
|
-
toolUseIntent:
|
|
104367
|
+
import { z as z68 } from "zod";
|
|
104368
|
+
var REQUEST_TIMEOUT_MS51 = 6e4;
|
|
104369
|
+
var inputSchema66 = z68.object({
|
|
104370
|
+
toolUseIntent: z68.string().optional().describe(
|
|
103848
104371
|
"Brief description of what you intend to accomplish with this tool call"
|
|
103849
104372
|
),
|
|
103850
|
-
connectionId:
|
|
103851
|
-
method:
|
|
104373
|
+
connectionId: z68.string().describe("ID of the Zendesk connection to use"),
|
|
104374
|
+
method: z68.enum(["GET", "POST", "PUT", "DELETE"]).describe(
|
|
103852
104375
|
"HTTP method. GET for reading, POST for creating/searching, PUT for updating, DELETE for removing."
|
|
103853
104376
|
),
|
|
103854
|
-
path:
|
|
104377
|
+
path: z68.string().describe(
|
|
103855
104378
|
"API path appended to https://{subdomain}.zendesk.com (e.g., '/api/v2/tickets.json', '/api/v2/search.json?query=status:open')"
|
|
103856
104379
|
),
|
|
103857
|
-
body:
|
|
104380
|
+
body: z68.record(z68.string(), z68.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
|
|
103858
104381
|
});
|
|
103859
|
-
var
|
|
103860
|
-
|
|
103861
|
-
success:
|
|
103862
|
-
status:
|
|
103863
|
-
data:
|
|
104382
|
+
var outputSchema66 = z68.discriminatedUnion("success", [
|
|
104383
|
+
z68.object({
|
|
104384
|
+
success: z68.literal(true),
|
|
104385
|
+
status: z68.number(),
|
|
104386
|
+
data: z68.record(z68.string(), z68.unknown())
|
|
103864
104387
|
}),
|
|
103865
|
-
|
|
103866
|
-
success:
|
|
103867
|
-
error:
|
|
104388
|
+
z68.object({
|
|
104389
|
+
success: z68.literal(false),
|
|
104390
|
+
error: z68.string()
|
|
103868
104391
|
})
|
|
103869
104392
|
]);
|
|
103870
104393
|
var requestTool37 = new ConnectorTool({
|
|
@@ -103873,8 +104396,8 @@ var requestTool37 = new ConnectorTool({
|
|
|
103873
104396
|
Authentication is handled automatically using email/token Basic auth.
|
|
103874
104397
|
Use this tool for all Zendesk API interactions: querying tickets, users, organizations, groups, and searching.
|
|
103875
104398
|
Zendesk uses cursor-based pagination with page[size] and page[after] parameters. All endpoints return .json suffix.`,
|
|
103876
|
-
inputSchema:
|
|
103877
|
-
outputSchema:
|
|
104399
|
+
inputSchema: inputSchema66,
|
|
104400
|
+
outputSchema: outputSchema66,
|
|
103878
104401
|
async execute({ connectionId, method, path: path4, body }, connections) {
|
|
103879
104402
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
103880
104403
|
if (!connection) {
|
|
@@ -103887,15 +104410,15 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
|
|
|
103887
104410
|
`[connector-request] zendesk/${connection.name}: ${method} ${path4}`
|
|
103888
104411
|
);
|
|
103889
104412
|
try {
|
|
103890
|
-
const subdomain =
|
|
103891
|
-
const email =
|
|
103892
|
-
const apiToken =
|
|
104413
|
+
const subdomain = parameters54.subdomain.getValue(connection);
|
|
104414
|
+
const email = parameters54.email.getValue(connection);
|
|
104415
|
+
const apiToken = parameters54.apiToken.getValue(connection);
|
|
103893
104416
|
const authToken = Buffer.from(`${email}/token:${apiToken}`).toString(
|
|
103894
104417
|
"base64"
|
|
103895
104418
|
);
|
|
103896
104419
|
const url = `https://${subdomain}.zendesk.com${path4.startsWith("/") ? "" : "/"}${path4}`;
|
|
103897
104420
|
const controller = new AbortController();
|
|
103898
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
104421
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS51);
|
|
103899
104422
|
try {
|
|
103900
104423
|
const response = await fetch(url, {
|
|
103901
104424
|
method,
|
|
@@ -103923,15 +104446,16 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
|
|
|
103923
104446
|
});
|
|
103924
104447
|
|
|
103925
104448
|
// ../connectors/src/connectors/zendesk/index.ts
|
|
103926
|
-
var
|
|
104449
|
+
var tools54 = { request: requestTool37 };
|
|
103927
104450
|
var zendeskConnector = new ConnectorPlugin({
|
|
103928
104451
|
slug: "zendesk",
|
|
103929
104452
|
authType: AUTH_TYPES.API_KEY,
|
|
103930
104453
|
name: "Zendesk",
|
|
103931
104454
|
description: "Connect to Zendesk Support for tickets, users, organizations, and customer service data using an API token.",
|
|
103932
104455
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7e9Q7PwV6MJRJMj543m2gl/55385fae903ccfa1599e35be9d3516aa/zendesk-icon.svg",
|
|
103933
|
-
parameters:
|
|
104456
|
+
parameters: parameters54,
|
|
103934
104457
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
104458
|
+
categories: ["crm"],
|
|
103935
104459
|
onboarding: zendeskOnboarding,
|
|
103936
104460
|
systemPrompt: {
|
|
103937
104461
|
en: `### Tools
|
|
@@ -104107,12 +104631,12 @@ export default async function handler(c: Context) {
|
|
|
104107
104631
|
- \`type:user role:agent\` \u2014 \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30E6\u30FC\u30B6\u30FC
|
|
104108
104632
|
- \`type:organization {name}\` \u2014 \u540D\u524D\u304C\u4E00\u81F4\u3059\u308B\u7D44\u7E54`
|
|
104109
104633
|
},
|
|
104110
|
-
tools:
|
|
104634
|
+
tools: tools54
|
|
104111
104635
|
});
|
|
104112
104636
|
|
|
104113
104637
|
// ../connectors/src/connectors/zendesk-oauth/tools/request.ts
|
|
104114
|
-
import { z as
|
|
104115
|
-
var
|
|
104638
|
+
import { z as z69 } from "zod";
|
|
104639
|
+
var REQUEST_TIMEOUT_MS52 = 6e4;
|
|
104116
104640
|
var cachedToken28 = null;
|
|
104117
104641
|
async function getProxyToken28(config) {
|
|
104118
104642
|
if (cachedToken28 && cachedToken28.expiresAt > Date.now() + 6e4) {
|
|
@@ -104144,27 +104668,27 @@ async function getProxyToken28(config) {
|
|
|
104144
104668
|
};
|
|
104145
104669
|
return data.token;
|
|
104146
104670
|
}
|
|
104147
|
-
var
|
|
104148
|
-
toolUseIntent:
|
|
104671
|
+
var inputSchema67 = z69.object({
|
|
104672
|
+
toolUseIntent: z69.string().optional().describe(
|
|
104149
104673
|
"Brief description of what you intend to accomplish with this tool call"
|
|
104150
104674
|
),
|
|
104151
|
-
connectionId:
|
|
104152
|
-
method:
|
|
104153
|
-
path:
|
|
104675
|
+
connectionId: z69.string().describe("ID of the Zendesk OAuth connection to use"),
|
|
104676
|
+
method: z69.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
|
|
104677
|
+
path: z69.string().describe(
|
|
104154
104678
|
"API path appended to the Zendesk base URL (e.g., '/api/v2/tickets.json', '/api/v2/search.json?query=status:open')"
|
|
104155
104679
|
),
|
|
104156
|
-
queryParams:
|
|
104157
|
-
body:
|
|
104680
|
+
queryParams: z69.record(z69.string(), z69.string()).optional().describe("Query parameters to append to the URL"),
|
|
104681
|
+
body: z69.record(z69.string(), z69.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
|
|
104158
104682
|
});
|
|
104159
|
-
var
|
|
104160
|
-
|
|
104161
|
-
success:
|
|
104162
|
-
status:
|
|
104163
|
-
data:
|
|
104683
|
+
var outputSchema67 = z69.discriminatedUnion("success", [
|
|
104684
|
+
z69.object({
|
|
104685
|
+
success: z69.literal(true),
|
|
104686
|
+
status: z69.number(),
|
|
104687
|
+
data: z69.record(z69.string(), z69.unknown())
|
|
104164
104688
|
}),
|
|
104165
|
-
|
|
104166
|
-
success:
|
|
104167
|
-
error:
|
|
104689
|
+
z69.object({
|
|
104690
|
+
success: z69.literal(false),
|
|
104691
|
+
error: z69.string()
|
|
104168
104692
|
})
|
|
104169
104693
|
]);
|
|
104170
104694
|
var requestTool38 = new ConnectorTool({
|
|
@@ -104173,8 +104697,8 @@ var requestTool38 = new ConnectorTool({
|
|
|
104173
104697
|
Authentication is handled automatically via OAuth proxy.
|
|
104174
104698
|
Use this tool for all Zendesk API interactions: querying tickets, users, organizations, groups, and searching.
|
|
104175
104699
|
Zendesk uses cursor-based pagination with page[size] and page[after] parameters. All endpoint paths end with .json.`,
|
|
104176
|
-
inputSchema:
|
|
104177
|
-
outputSchema:
|
|
104700
|
+
inputSchema: inputSchema67,
|
|
104701
|
+
outputSchema: outputSchema67,
|
|
104178
104702
|
async execute({ connectionId, method, path: path4, queryParams, body }, connections, config) {
|
|
104179
104703
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
104180
104704
|
if (!connection) {
|
|
@@ -104196,7 +104720,7 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
|
|
|
104196
104720
|
const token = await getProxyToken28(config.oauthProxy);
|
|
104197
104721
|
const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
|
|
104198
104722
|
const controller = new AbortController();
|
|
104199
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
104723
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS52);
|
|
104200
104724
|
try {
|
|
104201
104725
|
const response = await fetch(proxyUrl, {
|
|
104202
104726
|
method: "POST",
|
|
@@ -104265,18 +104789,19 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
|
|
|
104265
104789
|
});
|
|
104266
104790
|
|
|
104267
104791
|
// ../connectors/src/connectors/zendesk-oauth/parameters.ts
|
|
104268
|
-
var
|
|
104792
|
+
var parameters55 = {};
|
|
104269
104793
|
|
|
104270
104794
|
// ../connectors/src/connectors/zendesk-oauth/index.ts
|
|
104271
|
-
var
|
|
104795
|
+
var tools55 = { request: requestTool38 };
|
|
104272
104796
|
var zendeskOauthConnector = new ConnectorPlugin({
|
|
104273
104797
|
slug: "zendesk",
|
|
104274
104798
|
authType: AUTH_TYPES.OAUTH,
|
|
104275
104799
|
name: "Zendesk",
|
|
104276
104800
|
description: "Connect to Zendesk Support for tickets, users, organizations, and customer service data using OAuth.",
|
|
104277
104801
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7e9Q7PwV6MJRJMj543m2gl/55385fae903ccfa1599e35be9d3516aa/zendesk-icon.svg",
|
|
104278
|
-
parameters:
|
|
104802
|
+
parameters: parameters55,
|
|
104279
104803
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
104804
|
+
categories: ["crm"],
|
|
104280
104805
|
onboarding: zendeskOauthOnboarding,
|
|
104281
104806
|
proxyPolicy: {
|
|
104282
104807
|
allowlist: [
|
|
@@ -104404,7 +104929,7 @@ const res = await zendesk.request("/api/v2/tickets.json?page[size]=10");
|
|
|
104404
104929
|
const data = await res.json();
|
|
104405
104930
|
\`\`\``
|
|
104406
104931
|
},
|
|
104407
|
-
tools:
|
|
104932
|
+
tools: tools55,
|
|
104408
104933
|
async checkConnection(_params, config) {
|
|
104409
104934
|
const { proxyFetch } = config;
|
|
104410
104935
|
try {
|
|
@@ -104443,7 +104968,7 @@ var intercomOnboarding = new ConnectorOnboarding({
|
|
|
104443
104968
|
});
|
|
104444
104969
|
|
|
104445
104970
|
// ../connectors/src/connectors/intercom/parameters.ts
|
|
104446
|
-
var
|
|
104971
|
+
var parameters56 = {
|
|
104447
104972
|
accessToken: new ParameterDefinition({
|
|
104448
104973
|
slug: "access-token",
|
|
104449
104974
|
name: "Access Token",
|
|
@@ -104456,32 +104981,32 @@ var parameters55 = {
|
|
|
104456
104981
|
};
|
|
104457
104982
|
|
|
104458
104983
|
// ../connectors/src/connectors/intercom/tools/request.ts
|
|
104459
|
-
import { z as
|
|
104460
|
-
var
|
|
104984
|
+
import { z as z70 } from "zod";
|
|
104985
|
+
var BASE_URL33 = "https://api.intercom.io";
|
|
104461
104986
|
var API_VERSION = "2.11";
|
|
104462
|
-
var
|
|
104463
|
-
var
|
|
104464
|
-
toolUseIntent:
|
|
104987
|
+
var REQUEST_TIMEOUT_MS53 = 6e4;
|
|
104988
|
+
var inputSchema68 = z70.object({
|
|
104989
|
+
toolUseIntent: z70.string().optional().describe(
|
|
104465
104990
|
"Brief description of what you intend to accomplish with this tool call"
|
|
104466
104991
|
),
|
|
104467
|
-
connectionId:
|
|
104468
|
-
method:
|
|
104992
|
+
connectionId: z70.string().describe("ID of the Intercom connection to use"),
|
|
104993
|
+
method: z70.enum(["GET", "POST", "PUT", "DELETE"]).describe(
|
|
104469
104994
|
"HTTP method. GET for reading, POST for creating/searching, PUT for updating, DELETE for removing."
|
|
104470
104995
|
),
|
|
104471
|
-
path:
|
|
104996
|
+
path: z70.string().describe(
|
|
104472
104997
|
"API path appended to https://api.intercom.io (e.g., '/contacts', '/conversations', '/contacts/search')"
|
|
104473
104998
|
),
|
|
104474
|
-
body:
|
|
104999
|
+
body: z70.record(z70.string(), z70.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
|
|
104475
105000
|
});
|
|
104476
|
-
var
|
|
104477
|
-
|
|
104478
|
-
success:
|
|
104479
|
-
status:
|
|
104480
|
-
data:
|
|
105001
|
+
var outputSchema68 = z70.discriminatedUnion("success", [
|
|
105002
|
+
z70.object({
|
|
105003
|
+
success: z70.literal(true),
|
|
105004
|
+
status: z70.number(),
|
|
105005
|
+
data: z70.record(z70.string(), z70.unknown())
|
|
104481
105006
|
}),
|
|
104482
|
-
|
|
104483
|
-
success:
|
|
104484
|
-
error:
|
|
105007
|
+
z70.object({
|
|
105008
|
+
success: z70.literal(false),
|
|
105009
|
+
error: z70.string()
|
|
104485
105010
|
})
|
|
104486
105011
|
]);
|
|
104487
105012
|
var requestTool39 = new ConnectorTool({
|
|
@@ -104492,8 +105017,8 @@ Use this tool for all Intercom API interactions: querying contacts, conversation
|
|
|
104492
105017
|
Intercom uses cursor-based pagination with the starting_after parameter from pages.next.starting_after in the response.
|
|
104493
105018
|
Search endpoints (contacts/search, conversations/search) use POST with a query object in the body.
|
|
104494
105019
|
The Intercom-Version header is set to 2.11 automatically.`,
|
|
104495
|
-
inputSchema:
|
|
104496
|
-
outputSchema:
|
|
105020
|
+
inputSchema: inputSchema68,
|
|
105021
|
+
outputSchema: outputSchema68,
|
|
104497
105022
|
async execute({ connectionId, method, path: path4, body }, connections) {
|
|
104498
105023
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
104499
105024
|
if (!connection) {
|
|
@@ -104506,10 +105031,10 @@ The Intercom-Version header is set to 2.11 automatically.`,
|
|
|
104506
105031
|
`[connector-request] intercom/${connection.name}: ${method} ${path4}`
|
|
104507
105032
|
);
|
|
104508
105033
|
try {
|
|
104509
|
-
const accessToken =
|
|
104510
|
-
const url = `${
|
|
105034
|
+
const accessToken = parameters56.accessToken.getValue(connection);
|
|
105035
|
+
const url = `${BASE_URL33}${path4.startsWith("/") ? "" : "/"}${path4}`;
|
|
104511
105036
|
const controller = new AbortController();
|
|
104512
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
105037
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS53);
|
|
104513
105038
|
try {
|
|
104514
105039
|
const response = await fetch(url, {
|
|
104515
105040
|
method,
|
|
@@ -104540,15 +105065,16 @@ The Intercom-Version header is set to 2.11 automatically.`,
|
|
|
104540
105065
|
});
|
|
104541
105066
|
|
|
104542
105067
|
// ../connectors/src/connectors/intercom/index.ts
|
|
104543
|
-
var
|
|
105068
|
+
var tools56 = { request: requestTool39 };
|
|
104544
105069
|
var intercomConnector = new ConnectorPlugin({
|
|
104545
105070
|
slug: "intercom",
|
|
104546
105071
|
authType: AUTH_TYPES.API_KEY,
|
|
104547
105072
|
name: "Intercom",
|
|
104548
105073
|
description: "Connect to Intercom for contacts, conversations, companies, and customer engagement data using an Access Token.",
|
|
104549
105074
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/sb2cRMGClpId0LKiSqsok/ae90a0849f21ffe3faf73e04a5676b45/intercom.svg",
|
|
104550
|
-
parameters:
|
|
105075
|
+
parameters: parameters56,
|
|
104551
105076
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
105077
|
+
categories: ["crm"],
|
|
104552
105078
|
onboarding: intercomOnboarding,
|
|
104553
105079
|
systemPrompt: {
|
|
104554
105080
|
en: `### Tools
|
|
@@ -104744,13 +105270,13 @@ export default async function handler(c: Context) {
|
|
|
104744
105270
|
- \u8AD6\u7406\u6F14\u7B97\u5B50: \`AND\`, \`OR\`\uFF08\u8907\u6570\u30D5\u30A3\u30EB\u30BF\u306E\u7D50\u5408\uFF09
|
|
104745
105271
|
- \u65E5\u4ED8\u30D5\u30A3\u30FC\u30EB\u30C9\u306FUnix\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u4F7F\u7528`
|
|
104746
105272
|
},
|
|
104747
|
-
tools:
|
|
105273
|
+
tools: tools56
|
|
104748
105274
|
});
|
|
104749
105275
|
|
|
104750
105276
|
// ../connectors/src/connectors/intercom-oauth/tools/request.ts
|
|
104751
|
-
import { z as
|
|
104752
|
-
var
|
|
104753
|
-
var
|
|
105277
|
+
import { z as z71 } from "zod";
|
|
105278
|
+
var BASE_URL34 = "https://api.intercom.io";
|
|
105279
|
+
var REQUEST_TIMEOUT_MS54 = 6e4;
|
|
104754
105280
|
var cachedToken29 = null;
|
|
104755
105281
|
async function getProxyToken29(config) {
|
|
104756
105282
|
if (cachedToken29 && cachedToken29.expiresAt > Date.now() + 6e4) {
|
|
@@ -104782,27 +105308,27 @@ async function getProxyToken29(config) {
|
|
|
104782
105308
|
};
|
|
104783
105309
|
return data.token;
|
|
104784
105310
|
}
|
|
104785
|
-
var
|
|
104786
|
-
toolUseIntent:
|
|
105311
|
+
var inputSchema69 = z71.object({
|
|
105312
|
+
toolUseIntent: z71.string().optional().describe(
|
|
104787
105313
|
"Brief description of what you intend to accomplish with this tool call"
|
|
104788
105314
|
),
|
|
104789
|
-
connectionId:
|
|
104790
|
-
method:
|
|
104791
|
-
path:
|
|
105315
|
+
connectionId: z71.string().describe("ID of the Intercom OAuth connection to use"),
|
|
105316
|
+
method: z71.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
|
|
105317
|
+
path: z71.string().describe(
|
|
104792
105318
|
"API path appended to https://api.intercom.io (e.g., '/contacts', '/conversations', '/contacts/search')"
|
|
104793
105319
|
),
|
|
104794
|
-
queryParams:
|
|
104795
|
-
body:
|
|
105320
|
+
queryParams: z71.record(z71.string(), z71.string()).optional().describe("Query parameters to append to the URL"),
|
|
105321
|
+
body: z71.record(z71.string(), z71.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
|
|
104796
105322
|
});
|
|
104797
|
-
var
|
|
104798
|
-
|
|
104799
|
-
success:
|
|
104800
|
-
status:
|
|
104801
|
-
data:
|
|
105323
|
+
var outputSchema69 = z71.discriminatedUnion("success", [
|
|
105324
|
+
z71.object({
|
|
105325
|
+
success: z71.literal(true),
|
|
105326
|
+
status: z71.number(),
|
|
105327
|
+
data: z71.record(z71.string(), z71.unknown())
|
|
104802
105328
|
}),
|
|
104803
|
-
|
|
104804
|
-
success:
|
|
104805
|
-
error:
|
|
105329
|
+
z71.object({
|
|
105330
|
+
success: z71.literal(false),
|
|
105331
|
+
error: z71.string()
|
|
104806
105332
|
})
|
|
104807
105333
|
]);
|
|
104808
105334
|
var requestTool40 = new ConnectorTool({
|
|
@@ -104812,8 +105338,8 @@ Authentication is handled automatically via OAuth proxy.
|
|
|
104812
105338
|
The Intercom-Version header (2.11) is set automatically.
|
|
104813
105339
|
Use this tool for all Intercom API interactions: querying contacts, conversations, companies, articles, tags, and segments.
|
|
104814
105340
|
Search endpoints (contacts/search, conversations/search) use POST with a query object in the body.`,
|
|
104815
|
-
inputSchema:
|
|
104816
|
-
outputSchema:
|
|
105341
|
+
inputSchema: inputSchema69,
|
|
105342
|
+
outputSchema: outputSchema69,
|
|
104817
105343
|
async execute({ connectionId, method, path: path4, queryParams, body }, connections, config) {
|
|
104818
105344
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
104819
105345
|
if (!connection) {
|
|
@@ -104826,7 +105352,7 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
|
|
|
104826
105352
|
`[connector-request] intercom-oauth/${connection.name}: ${method} ${path4}`
|
|
104827
105353
|
);
|
|
104828
105354
|
try {
|
|
104829
|
-
let url = `${
|
|
105355
|
+
let url = `${BASE_URL34}${path4.startsWith("/") ? "" : "/"}${path4}`;
|
|
104830
105356
|
if (queryParams) {
|
|
104831
105357
|
const searchParams = new URLSearchParams(queryParams);
|
|
104832
105358
|
const separator = url.includes("?") ? "&" : "?";
|
|
@@ -104835,7 +105361,7 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
|
|
|
104835
105361
|
const token = await getProxyToken29(config.oauthProxy);
|
|
104836
105362
|
const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
|
|
104837
105363
|
const controller = new AbortController();
|
|
104838
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
105364
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS54);
|
|
104839
105365
|
try {
|
|
104840
105366
|
const response = await fetch(proxyUrl, {
|
|
104841
105367
|
method: "POST",
|
|
@@ -104905,18 +105431,19 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
|
|
|
104905
105431
|
});
|
|
104906
105432
|
|
|
104907
105433
|
// ../connectors/src/connectors/intercom-oauth/parameters.ts
|
|
104908
|
-
var
|
|
105434
|
+
var parameters57 = {};
|
|
104909
105435
|
|
|
104910
105436
|
// ../connectors/src/connectors/intercom-oauth/index.ts
|
|
104911
|
-
var
|
|
105437
|
+
var tools57 = { request: requestTool40 };
|
|
104912
105438
|
var intercomOauthConnector = new ConnectorPlugin({
|
|
104913
105439
|
slug: "intercom",
|
|
104914
105440
|
authType: AUTH_TYPES.OAUTH,
|
|
104915
105441
|
name: "Intercom",
|
|
104916
105442
|
description: "Connect to Intercom for contacts, conversations, companies, and customer engagement data using OAuth.",
|
|
104917
105443
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/sb2cRMGClpId0LKiSqsok/ae90a0849f21ffe3faf73e04a5676b45/intercom.svg",
|
|
104918
|
-
parameters:
|
|
105444
|
+
parameters: parameters57,
|
|
104919
105445
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
105446
|
+
categories: ["crm"],
|
|
104920
105447
|
onboarding: intercomOauthOnboarding,
|
|
104921
105448
|
proxyPolicy: {
|
|
104922
105449
|
allowlist: [
|
|
@@ -105044,7 +105571,7 @@ const res = await intercom.request("/contacts?per_page=10");
|
|
|
105044
105571
|
const data = await res.json();
|
|
105045
105572
|
\`\`\``
|
|
105046
105573
|
},
|
|
105047
|
-
tools:
|
|
105574
|
+
tools: tools57,
|
|
105048
105575
|
async checkConnection(_params, config) {
|
|
105049
105576
|
const { proxyFetch } = config;
|
|
105050
105577
|
try {
|
|
@@ -105089,7 +105616,7 @@ NOTE: The Query API endpoints (insights, funnels, retention) require a bookmark_
|
|
|
105089
105616
|
});
|
|
105090
105617
|
|
|
105091
105618
|
// ../connectors/src/connectors/mixpanel/parameters.ts
|
|
105092
|
-
var
|
|
105619
|
+
var parameters58 = {
|
|
105093
105620
|
serviceAccountUsername: new ParameterDefinition({
|
|
105094
105621
|
slug: "service-account-username",
|
|
105095
105622
|
name: "Service Account Username",
|
|
@@ -105129,35 +105656,35 @@ var parameters57 = {
|
|
|
105129
105656
|
};
|
|
105130
105657
|
|
|
105131
105658
|
// ../connectors/src/connectors/mixpanel/tools/request.ts
|
|
105132
|
-
import { z as
|
|
105133
|
-
var
|
|
105134
|
-
var
|
|
105135
|
-
toolUseIntent:
|
|
105659
|
+
import { z as z72 } from "zod";
|
|
105660
|
+
var REQUEST_TIMEOUT_MS55 = 6e4;
|
|
105661
|
+
var inputSchema70 = z72.object({
|
|
105662
|
+
toolUseIntent: z72.string().optional().describe(
|
|
105136
105663
|
"Brief description of what you intend to accomplish with this tool call"
|
|
105137
105664
|
),
|
|
105138
|
-
connectionId:
|
|
105139
|
-
method:
|
|
105665
|
+
connectionId: z72.string().describe("ID of the Mixpanel connection to use"),
|
|
105666
|
+
method: z72.enum(["GET", "POST"]).describe(
|
|
105140
105667
|
"HTTP method. GET for most Query API and Export endpoints. POST for Engage (profile query) endpoint."
|
|
105141
105668
|
),
|
|
105142
|
-
url:
|
|
105669
|
+
url: z72.string().describe(
|
|
105143
105670
|
"Full URL including query parameters (e.g., 'https://mixpanel.com/api/query/insights?project_id=12345&bookmark_id=67890'). The project_id query parameter is added automatically if not present."
|
|
105144
105671
|
),
|
|
105145
|
-
body:
|
|
105672
|
+
body: z72.string().optional().describe(
|
|
105146
105673
|
"Request body for POST requests. Use application/x-www-form-urlencoded format for the Engage endpoint, or JSON string for other POST endpoints."
|
|
105147
105674
|
),
|
|
105148
|
-
contentType:
|
|
105675
|
+
contentType: z72.enum(["application/json", "application/x-www-form-urlencoded"]).optional().describe(
|
|
105149
105676
|
"Content-Type header. Defaults to application/json. Use application/x-www-form-urlencoded for the Engage endpoint."
|
|
105150
105677
|
)
|
|
105151
105678
|
});
|
|
105152
|
-
var
|
|
105153
|
-
|
|
105154
|
-
success:
|
|
105155
|
-
status:
|
|
105156
|
-
data:
|
|
105679
|
+
var outputSchema70 = z72.discriminatedUnion("success", [
|
|
105680
|
+
z72.object({
|
|
105681
|
+
success: z72.literal(true),
|
|
105682
|
+
status: z72.number(),
|
|
105683
|
+
data: z72.unknown()
|
|
105157
105684
|
}),
|
|
105158
|
-
|
|
105159
|
-
success:
|
|
105160
|
-
error:
|
|
105685
|
+
z72.object({
|
|
105686
|
+
success: z72.literal(false),
|
|
105687
|
+
error: z72.string()
|
|
105161
105688
|
})
|
|
105162
105689
|
]);
|
|
105163
105690
|
var requestTool41 = new ConnectorTool({
|
|
@@ -105178,8 +105705,8 @@ Key endpoints:
|
|
|
105178
105705
|
- GET {exportBase}?from_date=YYYY-MM-DD&to_date=YYYY-MM-DD \u2014 Export raw events (JSONL)
|
|
105179
105706
|
|
|
105180
105707
|
Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
|
|
105181
|
-
inputSchema:
|
|
105182
|
-
outputSchema:
|
|
105708
|
+
inputSchema: inputSchema70,
|
|
105709
|
+
outputSchema: outputSchema70,
|
|
105183
105710
|
async execute({ connectionId, method, url, body, contentType }, connections) {
|
|
105184
105711
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
105185
105712
|
if (!connection) {
|
|
@@ -105192,9 +105719,9 @@ Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
|
|
|
105192
105719
|
`[connector-request] mixpanel/${connection.name}: ${method} ${url}`
|
|
105193
105720
|
);
|
|
105194
105721
|
try {
|
|
105195
|
-
const username =
|
|
105196
|
-
const secret =
|
|
105197
|
-
const projectId =
|
|
105722
|
+
const username = parameters58.serviceAccountUsername.getValue(connection);
|
|
105723
|
+
const secret = parameters58.serviceAccountSecret.getValue(connection);
|
|
105724
|
+
const projectId = parameters58.projectId.getValue(connection);
|
|
105198
105725
|
const authToken = btoa(`${username}:${secret}`);
|
|
105199
105726
|
let finalUrl = url;
|
|
105200
105727
|
const urlObj = new URL(url);
|
|
@@ -105203,7 +105730,7 @@ Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
|
|
|
105203
105730
|
finalUrl = urlObj.toString();
|
|
105204
105731
|
}
|
|
105205
105732
|
const controller = new AbortController();
|
|
105206
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
105733
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS55);
|
|
105207
105734
|
try {
|
|
105208
105735
|
const headers = {
|
|
105209
105736
|
Authorization: `Basic ${authToken}`,
|
|
@@ -105254,15 +105781,16 @@ Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
|
|
|
105254
105781
|
});
|
|
105255
105782
|
|
|
105256
105783
|
// ../connectors/src/connectors/mixpanel/index.ts
|
|
105257
|
-
var
|
|
105784
|
+
var tools58 = { request: requestTool41 };
|
|
105258
105785
|
var mixpanelConnector = new ConnectorPlugin({
|
|
105259
105786
|
slug: "mixpanel",
|
|
105260
105787
|
authType: AUTH_TYPES.API_KEY,
|
|
105261
105788
|
name: "Mixpanel",
|
|
105262
105789
|
description: "Connect to Mixpanel for product analytics, event tracking, and user behavior analysis.",
|
|
105263
105790
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7ykz0vNRjMqvTVrxS8wsj1/b2cd795be5b373877dee77cc6147c758/images__3_.png",
|
|
105264
|
-
parameters:
|
|
105791
|
+
parameters: parameters58,
|
|
105265
105792
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
105793
|
+
categories: ["marketing"],
|
|
105266
105794
|
onboarding: mixpanelOnboarding,
|
|
105267
105795
|
systemPrompt: {
|
|
105268
105796
|
en: `### Tools
|
|
@@ -105384,7 +105912,7 @@ export default async function handler(c: Context) {
|
|
|
105384
105912
|
|
|
105385
105913
|
\u91CD\u8981: Insights\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u306F\u3001Mixpanel UI\u306E\u65E2\u5B58\u30EC\u30DD\u30FC\u30C8\u306Ebookmark_id\u304C\u5FC5\u8981\u3067\u3059\u3002\u30A2\u30C9\u30DB\u30C3\u30AF\u306A\u30A4\u30D9\u30F3\u30C8\u5206\u6790\u306B\u306F\u3001Export API\u3067\u751F\u30A4\u30D9\u30F3\u30C8\u3092\u53D6\u5F97\u3057\u3001\u30B3\u30FC\u30C9\u4E0A\u3067\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002Export API\u304C\u6700\u3082\u67D4\u8EDF\u3067\u5E83\u304F\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3067\u3059\u3002`
|
|
105386
105914
|
},
|
|
105387
|
-
tools:
|
|
105915
|
+
tools: tools58
|
|
105388
105916
|
});
|
|
105389
105917
|
|
|
105390
105918
|
// ../connectors/src/connectors/grafana/setup.ts
|
|
@@ -105400,7 +105928,7 @@ var grafanaOnboarding = new ConnectorOnboarding({
|
|
|
105400
105928
|
});
|
|
105401
105929
|
|
|
105402
105930
|
// ../connectors/src/connectors/grafana/parameters.ts
|
|
105403
|
-
var
|
|
105931
|
+
var parameters59 = {
|
|
105404
105932
|
url: new ParameterDefinition({
|
|
105405
105933
|
slug: "url",
|
|
105406
105934
|
name: "Grafana URL",
|
|
@@ -105422,30 +105950,30 @@ var parameters58 = {
|
|
|
105422
105950
|
};
|
|
105423
105951
|
|
|
105424
105952
|
// ../connectors/src/connectors/grafana/tools/request.ts
|
|
105425
|
-
import { z as
|
|
105426
|
-
var
|
|
105427
|
-
var
|
|
105428
|
-
toolUseIntent:
|
|
105953
|
+
import { z as z73 } from "zod";
|
|
105954
|
+
var REQUEST_TIMEOUT_MS56 = 6e4;
|
|
105955
|
+
var inputSchema71 = z73.object({
|
|
105956
|
+
toolUseIntent: z73.string().optional().describe(
|
|
105429
105957
|
"Brief description of what you intend to accomplish with this tool call"
|
|
105430
105958
|
),
|
|
105431
|
-
connectionId:
|
|
105432
|
-
method:
|
|
105959
|
+
connectionId: z73.string().describe("ID of the Grafana connection to use"),
|
|
105960
|
+
method: z73.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).describe(
|
|
105433
105961
|
"HTTP method. GET for reading resources (datasources, dashboards, alerts). POST for queries and creating resources. PUT/PATCH for updates. DELETE for removal."
|
|
105434
105962
|
),
|
|
105435
|
-
path:
|
|
105963
|
+
path: z73.string().describe(
|
|
105436
105964
|
"API path relative to the Grafana base URL (e.g., '/api/datasources', '/api/search', '/api/ds/query'). Must start with '/'."
|
|
105437
105965
|
),
|
|
105438
|
-
body:
|
|
105966
|
+
body: z73.record(z73.string(), z73.unknown()).optional().describe("Request body (JSON). Required for POST/PUT/PATCH requests.")
|
|
105439
105967
|
});
|
|
105440
|
-
var
|
|
105441
|
-
|
|
105442
|
-
success:
|
|
105443
|
-
status:
|
|
105444
|
-
data:
|
|
105968
|
+
var outputSchema71 = z73.discriminatedUnion("success", [
|
|
105969
|
+
z73.object({
|
|
105970
|
+
success: z73.literal(true),
|
|
105971
|
+
status: z73.number(),
|
|
105972
|
+
data: z73.unknown()
|
|
105445
105973
|
}),
|
|
105446
|
-
|
|
105447
|
-
success:
|
|
105448
|
-
error:
|
|
105974
|
+
z73.object({
|
|
105975
|
+
success: z73.literal(false),
|
|
105976
|
+
error: z73.string()
|
|
105449
105977
|
})
|
|
105450
105978
|
]);
|
|
105451
105979
|
var requestTool42 = new ConnectorTool({
|
|
@@ -105454,8 +105982,8 @@ var requestTool42 = new ConnectorTool({
|
|
|
105454
105982
|
Authentication is handled automatically using the configured API Key or Service Account Token via Bearer token.
|
|
105455
105983
|
Use this tool to interact with Grafana resources: datasources, dashboards, alerts, annotations, and to execute datasource queries via the unified query API (/api/ds/query).
|
|
105456
105984
|
The path must start with '/' and is appended to the configured Grafana instance URL.`,
|
|
105457
|
-
inputSchema:
|
|
105458
|
-
outputSchema:
|
|
105985
|
+
inputSchema: inputSchema71,
|
|
105986
|
+
outputSchema: outputSchema71,
|
|
105459
105987
|
async execute({ connectionId, method, path: path4, body }, connections) {
|
|
105460
105988
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
105461
105989
|
if (!connection) {
|
|
@@ -105468,13 +105996,13 @@ The path must start with '/' and is appended to the configured Grafana instance
|
|
|
105468
105996
|
`[connector-request] grafana/${connection.name}: ${method} ${path4}`
|
|
105469
105997
|
);
|
|
105470
105998
|
try {
|
|
105471
|
-
const baseUrl =
|
|
105472
|
-
const apiKey =
|
|
105999
|
+
const baseUrl = parameters59.url.getValue(connection).replace(/\/+$/, "");
|
|
106000
|
+
const apiKey = parameters59.apiKey.getValue(connection);
|
|
105473
106001
|
const url = `${baseUrl}${path4}`;
|
|
105474
106002
|
const controller = new AbortController();
|
|
105475
106003
|
const timeout = setTimeout(
|
|
105476
106004
|
() => controller.abort(),
|
|
105477
|
-
|
|
106005
|
+
REQUEST_TIMEOUT_MS56
|
|
105478
106006
|
);
|
|
105479
106007
|
try {
|
|
105480
106008
|
const response = await fetch(url, {
|
|
@@ -105504,15 +106032,16 @@ The path must start with '/' and is appended to the configured Grafana instance
|
|
|
105504
106032
|
});
|
|
105505
106033
|
|
|
105506
106034
|
// ../connectors/src/connectors/grafana/index.ts
|
|
105507
|
-
var
|
|
106035
|
+
var tools59 = { request: requestTool42 };
|
|
105508
106036
|
var grafanaConnector = new ConnectorPlugin({
|
|
105509
106037
|
slug: "grafana",
|
|
105510
106038
|
authType: AUTH_TYPES.API_KEY,
|
|
105511
106039
|
name: "Grafana",
|
|
105512
106040
|
description: "Connect to Grafana for monitoring dashboards, datasource queries, and alerting.",
|
|
105513
106041
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3nGaPhV94lXQsHcCtv4mXz/0559d42f83066e8ba79e78410806750c/grafana-icon.webp",
|
|
105514
|
-
parameters:
|
|
106042
|
+
parameters: parameters59,
|
|
105515
106043
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
106044
|
+
categories: ["observability"],
|
|
105516
106045
|
onboarding: grafanaOnboarding,
|
|
105517
106046
|
systemPrompt: {
|
|
105518
106047
|
en: `### Tools
|
|
@@ -105632,7 +106161,7 @@ export default async function handler(c: Context) {
|
|
|
105632
106161
|
- \`GET /api/org\` \u2014 \u73FE\u5728\u306E\u7D44\u7E54\u3092\u53D6\u5F97
|
|
105633
106162
|
- \`GET /api/health\` \u2014 \u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF`
|
|
105634
106163
|
},
|
|
105635
|
-
tools:
|
|
106164
|
+
tools: tools59
|
|
105636
106165
|
});
|
|
105637
106166
|
|
|
105638
106167
|
// ../connectors/src/connectors/backlog/setup.ts
|
|
@@ -105650,7 +106179,7 @@ var backlogOnboarding = new ConnectorOnboarding({
|
|
|
105650
106179
|
});
|
|
105651
106180
|
|
|
105652
106181
|
// ../connectors/src/connectors/backlog/parameters.ts
|
|
105653
|
-
var
|
|
106182
|
+
var parameters60 = {
|
|
105654
106183
|
spaceUrl: new ParameterDefinition({
|
|
105655
106184
|
slug: "space-url",
|
|
105656
106185
|
name: "Backlog Space URL",
|
|
@@ -105672,24 +106201,24 @@ var parameters59 = {
|
|
|
105672
106201
|
};
|
|
105673
106202
|
|
|
105674
106203
|
// ../connectors/src/connectors/backlog/tools/request.ts
|
|
105675
|
-
import { z as
|
|
105676
|
-
var
|
|
105677
|
-
var
|
|
105678
|
-
toolUseIntent:
|
|
105679
|
-
connectionId:
|
|
105680
|
-
method:
|
|
105681
|
-
path:
|
|
105682
|
-
body:
|
|
106204
|
+
import { z as z74 } from "zod";
|
|
106205
|
+
var REQUEST_TIMEOUT_MS57 = 6e4;
|
|
106206
|
+
var inputSchema72 = z74.object({
|
|
106207
|
+
toolUseIntent: z74.string().optional().describe("Brief description of what you intend to accomplish with this tool call"),
|
|
106208
|
+
connectionId: z74.string().describe("ID of the Backlog connection to use"),
|
|
106209
|
+
method: z74.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).describe("HTTP method. Use GET to read resources, POST to create, PATCH/PUT to update, DELETE to remove."),
|
|
106210
|
+
path: z74.string().describe("API path relative to /api/v2/ (e.g., 'space', 'projects', 'issues?projectId[]=12345'). Query parameters can be appended. The apiKey query parameter is added automatically \u2014 do NOT include it."),
|
|
106211
|
+
body: z74.record(z74.string(), z74.unknown()).optional().describe("Request body as JSON object. Required for POST, PUT, and PATCH requests (e.g., issue creation, comment addition).")
|
|
105683
106212
|
});
|
|
105684
|
-
var
|
|
105685
|
-
|
|
105686
|
-
success:
|
|
105687
|
-
status:
|
|
105688
|
-
data:
|
|
106213
|
+
var outputSchema72 = z74.discriminatedUnion("success", [
|
|
106214
|
+
z74.object({
|
|
106215
|
+
success: z74.literal(true),
|
|
106216
|
+
status: z74.number(),
|
|
106217
|
+
data: z74.union([z74.record(z74.string(), z74.unknown()), z74.array(z74.unknown())])
|
|
105689
106218
|
}),
|
|
105690
|
-
|
|
105691
|
-
success:
|
|
105692
|
-
error:
|
|
106219
|
+
z74.object({
|
|
106220
|
+
success: z74.literal(false),
|
|
106221
|
+
error: z74.string()
|
|
105693
106222
|
})
|
|
105694
106223
|
]);
|
|
105695
106224
|
var requestTool43 = new ConnectorTool({
|
|
@@ -105699,8 +106228,8 @@ Authentication is handled automatically by appending the apiKey query parameter
|
|
|
105699
106228
|
Use this tool for all Backlog operations: listing projects, searching and creating issues, managing wikis, retrieving users, and more.
|
|
105700
106229
|
The base URL and API key are configured per connection \u2014 only specify the API path relative to /api/v2/.
|
|
105701
106230
|
Do NOT include the apiKey parameter yourself; it is injected automatically.`,
|
|
105702
|
-
inputSchema:
|
|
105703
|
-
outputSchema:
|
|
106231
|
+
inputSchema: inputSchema72,
|
|
106232
|
+
outputSchema: outputSchema72,
|
|
105704
106233
|
async execute({ connectionId, method, path: path4, body }, connections) {
|
|
105705
106234
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
105706
106235
|
if (!connection) {
|
|
@@ -105708,12 +106237,12 @@ Do NOT include the apiKey parameter yourself; it is injected automatically.`,
|
|
|
105708
106237
|
}
|
|
105709
106238
|
console.log(`[connector-request] backlog-api-key/${connection.name}: ${method} ${path4}`);
|
|
105710
106239
|
try {
|
|
105711
|
-
const spaceUrl =
|
|
105712
|
-
const apiKey =
|
|
106240
|
+
const spaceUrl = parameters60.spaceUrl.getValue(connection);
|
|
106241
|
+
const apiKey = parameters60.apiKey.getValue(connection);
|
|
105713
106242
|
const separator = path4.includes("?") ? "&" : "?";
|
|
105714
106243
|
const url = `${spaceUrl.replace(/\/+$/, "")}/api/v2/${path4}${separator}apiKey=${apiKey}`;
|
|
105715
106244
|
const controller = new AbortController();
|
|
105716
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
106245
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS57);
|
|
105717
106246
|
try {
|
|
105718
106247
|
const headers = {
|
|
105719
106248
|
Accept: "application/json"
|
|
@@ -105749,15 +106278,16 @@ Do NOT include the apiKey parameter yourself; it is injected automatically.`,
|
|
|
105749
106278
|
});
|
|
105750
106279
|
|
|
105751
106280
|
// ../connectors/src/connectors/backlog/index.ts
|
|
105752
|
-
var
|
|
106281
|
+
var tools60 = { request: requestTool43 };
|
|
105753
106282
|
var backlogConnector = new ConnectorPlugin({
|
|
105754
106283
|
slug: "backlog",
|
|
105755
106284
|
authType: AUTH_TYPES.API_KEY,
|
|
105756
106285
|
name: "Backlog",
|
|
105757
106286
|
description: "Connect to Nulab Backlog for project management, issue tracking, and wiki data retrieval using API key authentication.",
|
|
105758
106287
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6KcVBGf3mUHnuCOQgQMvtT/e8558c7990e40e3be46948e9476190fb/backlog-favicon.svg",
|
|
105759
|
-
parameters:
|
|
106288
|
+
parameters: parameters60,
|
|
105760
106289
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
106290
|
+
categories: ["productivity"],
|
|
105761
106291
|
onboarding: backlogOnboarding,
|
|
105762
106292
|
systemPrompt: {
|
|
105763
106293
|
en: `### Tools
|
|
@@ -105905,7 +106435,7 @@ await backlog.request("/api/v2/issues", {
|
|
|
105905
106435
|
- sort: "created", "updated", "issueType", "category", "priority" \u7B49
|
|
105906
106436
|
- order: "asc" \u307E\u305F\u306F "desc"`
|
|
105907
106437
|
},
|
|
105908
|
-
tools:
|
|
106438
|
+
tools: tools60
|
|
105909
106439
|
});
|
|
105910
106440
|
|
|
105911
106441
|
// ../connectors/src/connectors/gamma/setup.ts
|
|
@@ -105921,7 +106451,7 @@ var gammaOnboarding = new ConnectorOnboarding({
|
|
|
105921
106451
|
});
|
|
105922
106452
|
|
|
105923
106453
|
// ../connectors/src/connectors/gamma/parameters.ts
|
|
105924
|
-
var
|
|
106454
|
+
var parameters61 = {
|
|
105925
106455
|
apiKey: new ParameterDefinition({
|
|
105926
106456
|
slug: "api-key",
|
|
105927
106457
|
name: "Gamma API Key",
|
|
@@ -105934,29 +106464,29 @@ var parameters60 = {
|
|
|
105934
106464
|
};
|
|
105935
106465
|
|
|
105936
106466
|
// ../connectors/src/connectors/gamma/tools/request.ts
|
|
105937
|
-
import { z as
|
|
105938
|
-
var
|
|
105939
|
-
var
|
|
105940
|
-
var
|
|
105941
|
-
toolUseIntent:
|
|
106467
|
+
import { z as z75 } from "zod";
|
|
106468
|
+
var BASE_URL35 = "https://public-api.gamma.app/v1.0";
|
|
106469
|
+
var REQUEST_TIMEOUT_MS58 = 6e4;
|
|
106470
|
+
var inputSchema73 = z75.object({
|
|
106471
|
+
toolUseIntent: z75.string().optional().describe(
|
|
105942
106472
|
"Brief description of what you intend to accomplish with this tool call"
|
|
105943
106473
|
),
|
|
105944
|
-
connectionId:
|
|
105945
|
-
method:
|
|
105946
|
-
path:
|
|
106474
|
+
connectionId: z75.string().describe("ID of the Gamma connection to use"),
|
|
106475
|
+
method: z75.enum(["GET", "POST"]).describe("HTTP method. GET for listing resources, POST for creating."),
|
|
106476
|
+
path: z75.string().describe(
|
|
105947
106477
|
"API path (e.g., '/themes', '/folders', '/generations', '/generations/{generationId}')"
|
|
105948
106478
|
),
|
|
105949
|
-
body:
|
|
106479
|
+
body: z75.record(z75.string(), z75.unknown()).optional().describe("Request body (JSON) for POST requests")
|
|
105950
106480
|
});
|
|
105951
|
-
var
|
|
105952
|
-
|
|
105953
|
-
success:
|
|
105954
|
-
status:
|
|
105955
|
-
data:
|
|
106481
|
+
var outputSchema73 = z75.discriminatedUnion("success", [
|
|
106482
|
+
z75.object({
|
|
106483
|
+
success: z75.literal(true),
|
|
106484
|
+
status: z75.number(),
|
|
106485
|
+
data: z75.unknown()
|
|
105956
106486
|
}),
|
|
105957
|
-
|
|
105958
|
-
success:
|
|
105959
|
-
error:
|
|
106487
|
+
z75.object({
|
|
106488
|
+
success: z75.literal(false),
|
|
106489
|
+
error: z75.string()
|
|
105960
106490
|
})
|
|
105961
106491
|
]);
|
|
105962
106492
|
var requestTool44 = new ConnectorTool({
|
|
@@ -105965,8 +106495,8 @@ var requestTool44 = new ConnectorTool({
|
|
|
105965
106495
|
Authentication is handled automatically using the API Key (X-API-KEY header).
|
|
105966
106496
|
Use this tool for listing themes, listing folders, checking generation status, and other read operations.
|
|
105967
106497
|
For creating presentations/documents, prefer the gamma_generate tool instead.`,
|
|
105968
|
-
inputSchema:
|
|
105969
|
-
outputSchema:
|
|
106498
|
+
inputSchema: inputSchema73,
|
|
106499
|
+
outputSchema: outputSchema73,
|
|
105970
106500
|
async execute({ connectionId, method, path: path4, body }, connections) {
|
|
105971
106501
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
105972
106502
|
if (!connection) {
|
|
@@ -105979,10 +106509,10 @@ For creating presentations/documents, prefer the gamma_generate tool instead.`,
|
|
|
105979
106509
|
`[connector-request] gamma/${connection.name}: ${method} ${path4}`
|
|
105980
106510
|
);
|
|
105981
106511
|
try {
|
|
105982
|
-
const apiKey =
|
|
105983
|
-
const url = `${
|
|
106512
|
+
const apiKey = parameters61.apiKey.getValue(connection);
|
|
106513
|
+
const url = `${BASE_URL35}${path4}`;
|
|
105984
106514
|
const controller = new AbortController();
|
|
105985
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
106515
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS58);
|
|
105986
106516
|
try {
|
|
105987
106517
|
const response = await fetch(url, {
|
|
105988
106518
|
method,
|
|
@@ -106011,35 +106541,35 @@ For creating presentations/documents, prefer the gamma_generate tool instead.`,
|
|
|
106011
106541
|
});
|
|
106012
106542
|
|
|
106013
106543
|
// ../connectors/src/connectors/gamma/tools/generate.ts
|
|
106014
|
-
import { z as
|
|
106015
|
-
var
|
|
106544
|
+
import { z as z76 } from "zod";
|
|
106545
|
+
var BASE_URL36 = "https://public-api.gamma.app/v1.0";
|
|
106016
106546
|
var POLL_INTERVAL_MS3 = 5e3;
|
|
106017
106547
|
var MAX_POLL_DURATION_MS = 3e5;
|
|
106018
|
-
var
|
|
106019
|
-
toolUseIntent:
|
|
106548
|
+
var inputSchema74 = z76.object({
|
|
106549
|
+
toolUseIntent: z76.string().optional().describe(
|
|
106020
106550
|
"Brief description of what you intend to accomplish with this tool call"
|
|
106021
106551
|
),
|
|
106022
|
-
connectionId:
|
|
106023
|
-
inputText:
|
|
106552
|
+
connectionId: z76.string().describe("ID of the Gamma connection to use"),
|
|
106553
|
+
inputText: z76.string().describe(
|
|
106024
106554
|
"Content for the generation. Can include text and image URLs. Max ~400,000 characters."
|
|
106025
106555
|
),
|
|
106026
|
-
textMode:
|
|
106556
|
+
textMode: z76.enum(["generate", "condense", "preserve"]).describe(
|
|
106027
106557
|
"How inputText is modified: 'generate' creates new content from the topic, 'condense' shortens existing text, 'preserve' keeps text as-is."
|
|
106028
106558
|
),
|
|
106029
|
-
format:
|
|
106030
|
-
numCards:
|
|
106031
|
-
themeId:
|
|
106559
|
+
format: z76.enum(["presentation", "document", "webpage", "social"]).optional().describe("Type of artifact to create. Defaults to 'presentation'."),
|
|
106560
|
+
numCards: z76.number().int().min(1).max(75).optional().describe("Number of cards/slides. Defaults to 10."),
|
|
106561
|
+
themeId: z76.string().optional().describe(
|
|
106032
106562
|
"Theme ID for look and feel. Use gamma_request GET /themes to list available themes."
|
|
106033
106563
|
),
|
|
106034
|
-
tone:
|
|
106564
|
+
tone: z76.string().optional().describe(
|
|
106035
106565
|
"Tone/voice of the output (e.g., 'professional', 'casual', 'academic'). Max 500 chars."
|
|
106036
106566
|
),
|
|
106037
|
-
audience:
|
|
106567
|
+
audience: z76.string().optional().describe(
|
|
106038
106568
|
"Target audience description (e.g., 'marketing executives'). Max 500 chars."
|
|
106039
106569
|
),
|
|
106040
|
-
language:
|
|
106041
|
-
textAmount:
|
|
106042
|
-
imageSource:
|
|
106570
|
+
language: z76.string().optional().describe("Output language code (e.g., 'en', 'ja'). Defaults to 'en'."),
|
|
106571
|
+
textAmount: z76.enum(["brief", "medium", "detailed", "extensive"]).optional().describe("Text volume per card. Defaults to 'medium'."),
|
|
106572
|
+
imageSource: z76.enum([
|
|
106043
106573
|
"aiGenerated",
|
|
106044
106574
|
"pictographic",
|
|
106045
106575
|
"pexels",
|
|
@@ -106051,26 +106581,26 @@ var inputSchema73 = z75.object({
|
|
|
106051
106581
|
"placeholder",
|
|
106052
106582
|
"noImages"
|
|
106053
106583
|
]).optional().describe("Image source. Defaults to 'aiGenerated'."),
|
|
106054
|
-
additionalInstructions:
|
|
106584
|
+
additionalInstructions: z76.string().optional().describe(
|
|
106055
106585
|
"Additional specifications for content, layout, and aesthetics. Max 5000 chars."
|
|
106056
106586
|
),
|
|
106057
|
-
exportAs:
|
|
106587
|
+
exportAs: z76.enum(["pdf", "pptx", "png"]).optional().describe("Export file format. If omitted, no export file is generated.")
|
|
106058
106588
|
});
|
|
106059
|
-
var
|
|
106060
|
-
|
|
106061
|
-
success:
|
|
106062
|
-
generationId:
|
|
106063
|
-
gammaId:
|
|
106064
|
-
gammaUrl:
|
|
106065
|
-
exportUrl:
|
|
106066
|
-
credits:
|
|
106067
|
-
deducted:
|
|
106068
|
-
remaining:
|
|
106589
|
+
var outputSchema74 = z76.discriminatedUnion("success", [
|
|
106590
|
+
z76.object({
|
|
106591
|
+
success: z76.literal(true),
|
|
106592
|
+
generationId: z76.string(),
|
|
106593
|
+
gammaId: z76.string(),
|
|
106594
|
+
gammaUrl: z76.string(),
|
|
106595
|
+
exportUrl: z76.string().optional(),
|
|
106596
|
+
credits: z76.object({
|
|
106597
|
+
deducted: z76.number(),
|
|
106598
|
+
remaining: z76.number()
|
|
106069
106599
|
}).optional()
|
|
106070
106600
|
}),
|
|
106071
|
-
|
|
106072
|
-
success:
|
|
106073
|
-
error:
|
|
106601
|
+
z76.object({
|
|
106602
|
+
success: z76.literal(false),
|
|
106603
|
+
error: z76.string()
|
|
106074
106604
|
})
|
|
106075
106605
|
]);
|
|
106076
106606
|
var generateTool = new ConnectorTool({
|
|
@@ -106079,8 +106609,8 @@ var generateTool = new ConnectorTool({
|
|
|
106079
106609
|
This tool creates the generation, then automatically polls until completion and returns the result URL.
|
|
106080
106610
|
Use gamma_request GET /themes first if you want to pick a specific theme.
|
|
106081
106611
|
Gamma does NOT support image uploads. To visualize data, embed raw numbers directly into inputText as structured text (markdown tables, bullet lists with figures) \u2014 Gamma AI will render charts and visuals from the data.`,
|
|
106082
|
-
inputSchema:
|
|
106083
|
-
outputSchema:
|
|
106612
|
+
inputSchema: inputSchema74,
|
|
106613
|
+
outputSchema: outputSchema74,
|
|
106084
106614
|
async execute({
|
|
106085
106615
|
connectionId,
|
|
106086
106616
|
inputText,
|
|
@@ -106107,7 +106637,7 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
|
|
|
106107
106637
|
`[connector-generate] gamma/${connection.name}: creating ${format2 ?? "presentation"}`
|
|
106108
106638
|
);
|
|
106109
106639
|
try {
|
|
106110
|
-
const apiKey =
|
|
106640
|
+
const apiKey = parameters61.apiKey.getValue(connection);
|
|
106111
106641
|
const headers = {
|
|
106112
106642
|
"X-API-KEY": apiKey,
|
|
106113
106643
|
"Content-Type": "application/json"
|
|
@@ -106129,7 +106659,7 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
|
|
|
106129
106659
|
if (textAmount) textOptions.amount = textAmount;
|
|
106130
106660
|
if (Object.keys(textOptions).length > 0) body.textOptions = textOptions;
|
|
106131
106661
|
if (imageSource) body.imageOptions = { source: imageSource };
|
|
106132
|
-
const createRes = await fetch(`${
|
|
106662
|
+
const createRes = await fetch(`${BASE_URL36}/generations`, {
|
|
106133
106663
|
method: "POST",
|
|
106134
106664
|
headers,
|
|
106135
106665
|
body: JSON.stringify(body)
|
|
@@ -106149,7 +106679,7 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
|
|
|
106149
106679
|
const deadline = Date.now() + MAX_POLL_DURATION_MS;
|
|
106150
106680
|
while (Date.now() < deadline) {
|
|
106151
106681
|
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS3));
|
|
106152
|
-
const pollRes = await fetch(`${
|
|
106682
|
+
const pollRes = await fetch(`${BASE_URL36}/generations/${generationId}`, {
|
|
106153
106683
|
method: "GET",
|
|
106154
106684
|
headers
|
|
106155
106685
|
});
|
|
@@ -106187,15 +106717,16 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
|
|
|
106187
106717
|
});
|
|
106188
106718
|
|
|
106189
106719
|
// ../connectors/src/connectors/gamma/index.ts
|
|
106190
|
-
var
|
|
106720
|
+
var tools61 = { request: requestTool44, generate: generateTool };
|
|
106191
106721
|
var gammaConnector = new ConnectorPlugin({
|
|
106192
106722
|
slug: "gamma",
|
|
106193
106723
|
authType: AUTH_TYPES.API_KEY,
|
|
106194
106724
|
name: "Gamma",
|
|
106195
106725
|
description: "Connect to Gamma for AI-powered presentation, document, webpage, and social post generation.",
|
|
106196
106726
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/KoMGPpPcgtB9oDYe1OBjS/1ba7eb061c4497106bf6d249866dc471/gamma.svg",
|
|
106197
|
-
parameters:
|
|
106727
|
+
parameters: parameters61,
|
|
106198
106728
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
106729
|
+
categories: ["productivity"],
|
|
106199
106730
|
onboarding: gammaOnboarding,
|
|
106200
106731
|
systemPrompt: {
|
|
106201
106732
|
en: `### Tools
|
|
@@ -106347,7 +106878,7 @@ export default async function handler(c: Context) {
|
|
|
106347
106878
|
#### \u30C7\u30FC\u30BF\u306E\u53EF\u8996\u5316
|
|
106348
106879
|
Gamma\u306F\u753B\u50CF\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u30C7\u30FC\u30BF\u3092\u53EF\u8996\u5316\u3057\u305F\u3044\u5834\u5408\uFF08\u30C1\u30E3\u30FC\u30C8\u3001\u30B0\u30E9\u30D5\u3001\u30C6\u30FC\u30D6\u30EB\u306A\u3069\uFF09\u306F\u3001\`inputText\` \u306B\u6570\u5024\u3084\u30C7\u30FC\u30BF\u3092\u69CB\u9020\u5316\u30C6\u30AD\u30B9\u30C8\uFF08\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30C6\u30FC\u30D6\u30EB\u3001\u6570\u5024\u4ED8\u304D\u7B87\u6761\u66F8\u304D\u306A\u3069\uFF09\u3068\u3057\u3066\u76F4\u63A5\u57CB\u3081\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044\u3002Gamma AI\u304C\u30C7\u30FC\u30BF\u304B\u3089\u9069\u5207\u306A\u30D3\u30B8\u30E5\u30A2\u30EB\u8981\u7D20\u3092\u751F\u6210\u3057\u307E\u3059\u3002\u30ED\u30FC\u30AB\u30EB\u3067\u30C1\u30E3\u30FC\u30C8\u753B\u50CF\u3092\u751F\u6210\u3057\u3066\u542B\u3081\u308B\u306E\u3067\u306F\u306A\u304F\u3001\u30C7\u30FC\u30BF\u306E\u5024\u3092\u30A4\u30F3\u30E9\u30A4\u30F3\u3067\u6E21\u3057\u3066Gamma\u306B\u53EF\u8996\u5316\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002`
|
|
106349
106880
|
},
|
|
106350
|
-
tools:
|
|
106881
|
+
tools: tools61
|
|
106351
106882
|
});
|
|
106352
106883
|
|
|
106353
106884
|
// ../connectors/src/connectors/sentry/setup.ts
|
|
@@ -106363,7 +106894,7 @@ var sentryOnboarding = new ConnectorOnboarding({
|
|
|
106363
106894
|
});
|
|
106364
106895
|
|
|
106365
106896
|
// ../connectors/src/connectors/sentry/parameters.ts
|
|
106366
|
-
var
|
|
106897
|
+
var parameters62 = {
|
|
106367
106898
|
organizationSlug: new ParameterDefinition({
|
|
106368
106899
|
slug: "organization-slug",
|
|
106369
106900
|
name: "Sentry Organization Slug",
|
|
@@ -106385,29 +106916,29 @@ var parameters61 = {
|
|
|
106385
106916
|
};
|
|
106386
106917
|
|
|
106387
106918
|
// ../connectors/src/connectors/sentry/tools/request.ts
|
|
106388
|
-
import { z as
|
|
106389
|
-
var
|
|
106390
|
-
var
|
|
106391
|
-
var
|
|
106392
|
-
toolUseIntent:
|
|
106919
|
+
import { z as z77 } from "zod";
|
|
106920
|
+
var BASE_URL37 = "https://sentry.io/api/0";
|
|
106921
|
+
var REQUEST_TIMEOUT_MS59 = 6e4;
|
|
106922
|
+
var inputSchema75 = z77.object({
|
|
106923
|
+
toolUseIntent: z77.string().optional().describe(
|
|
106393
106924
|
"Brief description of what you intend to accomplish with this tool call"
|
|
106394
106925
|
),
|
|
106395
|
-
connectionId:
|
|
106396
|
-
method:
|
|
106397
|
-
path:
|
|
106926
|
+
connectionId: z77.string().describe("ID of the Sentry connection to use"),
|
|
106927
|
+
method: z77.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
|
|
106928
|
+
path: z77.string().describe(
|
|
106398
106929
|
"API path appended to https://sentry.io/api/0 (e.g., '/organizations/{organizationSlug}/projects/', '/projects/{organizationSlug}/{project}/issues/'). {organizationSlug} is automatically replaced with the configured organization slug."
|
|
106399
106930
|
),
|
|
106400
|
-
body:
|
|
106931
|
+
body: z77.record(z77.string(), z77.unknown()).optional().describe("JSON request body for POST/PUT requests")
|
|
106401
106932
|
});
|
|
106402
|
-
var
|
|
106403
|
-
|
|
106404
|
-
success:
|
|
106405
|
-
status:
|
|
106406
|
-
data:
|
|
106933
|
+
var outputSchema75 = z77.discriminatedUnion("success", [
|
|
106934
|
+
z77.object({
|
|
106935
|
+
success: z77.literal(true),
|
|
106936
|
+
status: z77.number(),
|
|
106937
|
+
data: z77.unknown()
|
|
106407
106938
|
}),
|
|
106408
|
-
|
|
106409
|
-
success:
|
|
106410
|
-
error:
|
|
106939
|
+
z77.object({
|
|
106940
|
+
success: z77.literal(false),
|
|
106941
|
+
error: z77.string()
|
|
106411
106942
|
})
|
|
106412
106943
|
]);
|
|
106413
106944
|
var requestTool45 = new ConnectorTool({
|
|
@@ -106416,8 +106947,8 @@ var requestTool45 = new ConnectorTool({
|
|
|
106416
106947
|
Supports GET, POST, PUT, and DELETE methods.
|
|
106417
106948
|
Authentication is handled automatically via Bearer token.
|
|
106418
106949
|
{organizationSlug} in the path is automatically replaced with the configured organization slug.`,
|
|
106419
|
-
inputSchema:
|
|
106420
|
-
outputSchema:
|
|
106950
|
+
inputSchema: inputSchema75,
|
|
106951
|
+
outputSchema: outputSchema75,
|
|
106421
106952
|
async execute({ connectionId, method, path: path4, body }, connections) {
|
|
106422
106953
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
106423
106954
|
if (!connection) {
|
|
@@ -106430,15 +106961,15 @@ Authentication is handled automatically via Bearer token.
|
|
|
106430
106961
|
`[connector-request] sentry/${connection.name}: ${method} ${path4}`
|
|
106431
106962
|
);
|
|
106432
106963
|
try {
|
|
106433
|
-
const authToken =
|
|
106434
|
-
const organizationSlug =
|
|
106964
|
+
const authToken = parameters62.authToken.getValue(connection);
|
|
106965
|
+
const organizationSlug = parameters62.organizationSlug.getValue(connection);
|
|
106435
106966
|
const resolvedPath = path4.replace(
|
|
106436
106967
|
/\{organizationSlug\}/g,
|
|
106437
106968
|
organizationSlug
|
|
106438
106969
|
);
|
|
106439
|
-
const url = `${
|
|
106970
|
+
const url = `${BASE_URL37}${resolvedPath.startsWith("/") ? "" : "/"}${resolvedPath}`;
|
|
106440
106971
|
const controller = new AbortController();
|
|
106441
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
106972
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS59);
|
|
106442
106973
|
try {
|
|
106443
106974
|
const response = await fetch(url, {
|
|
106444
106975
|
method,
|
|
@@ -106467,15 +106998,16 @@ Authentication is handled automatically via Bearer token.
|
|
|
106467
106998
|
});
|
|
106468
106999
|
|
|
106469
107000
|
// ../connectors/src/connectors/sentry/index.ts
|
|
106470
|
-
var
|
|
107001
|
+
var tools62 = { request: requestTool45 };
|
|
106471
107002
|
var sentryConnector = new ConnectorPlugin({
|
|
106472
107003
|
slug: "sentry",
|
|
106473
107004
|
authType: AUTH_TYPES.API_KEY,
|
|
106474
107005
|
name: "Sentry",
|
|
106475
107006
|
description: "Connect to Sentry for error tracking and performance monitoring data.",
|
|
106476
107007
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4B8ZEGFGjTeMWNnXQb1dAL/ac10f813f02353f5b0cbe64fb5c06d8f/sentry.svg",
|
|
106477
|
-
parameters:
|
|
107008
|
+
parameters: parameters62,
|
|
106478
107009
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
107010
|
+
categories: ["observability"],
|
|
106479
107011
|
onboarding: sentryOnboarding,
|
|
106480
107012
|
systemPrompt: {
|
|
106481
107013
|
en: `### Tools
|
|
@@ -106643,10 +107175,10 @@ events.forEach(e => console.log(e.dateCreated, e.message));
|
|
|
106643
107175
|
await sentry.updateIssue("12345", { status: "resolved" });
|
|
106644
107176
|
\`\`\``
|
|
106645
107177
|
},
|
|
106646
|
-
tools:
|
|
107178
|
+
tools: tools62,
|
|
106647
107179
|
async checkConnection(params) {
|
|
106648
|
-
const authToken = params[
|
|
106649
|
-
const organizationSlug = params[
|
|
107180
|
+
const authToken = params[parameters62.authToken.slug];
|
|
107181
|
+
const organizationSlug = params[parameters62.organizationSlug.slug];
|
|
106650
107182
|
if (!authToken || !organizationSlug) {
|
|
106651
107183
|
return {
|
|
106652
107184
|
success: false,
|
|
@@ -106692,7 +107224,7 @@ var salesforceOnboarding = new ConnectorOnboarding({
|
|
|
106692
107224
|
});
|
|
106693
107225
|
|
|
106694
107226
|
// ../connectors/src/connectors/salesforce/parameters.ts
|
|
106695
|
-
var
|
|
107227
|
+
var parameters63 = {
|
|
106696
107228
|
instanceUrl: new ParameterDefinition({
|
|
106697
107229
|
slug: "instance-url",
|
|
106698
107230
|
name: "Instance URL",
|
|
@@ -106723,30 +107255,30 @@ var parameters62 = {
|
|
|
106723
107255
|
};
|
|
106724
107256
|
|
|
106725
107257
|
// ../connectors/src/connectors/salesforce/tools/request.ts
|
|
106726
|
-
import { z as
|
|
106727
|
-
var
|
|
106728
|
-
var
|
|
106729
|
-
toolUseIntent:
|
|
107258
|
+
import { z as z78 } from "zod";
|
|
107259
|
+
var REQUEST_TIMEOUT_MS60 = 6e4;
|
|
107260
|
+
var inputSchema76 = z78.object({
|
|
107261
|
+
toolUseIntent: z78.string().optional().describe(
|
|
106730
107262
|
"Brief description of what you intend to accomplish with this tool call"
|
|
106731
107263
|
),
|
|
106732
|
-
connectionId:
|
|
106733
|
-
method:
|
|
107264
|
+
connectionId: z78.string().describe("ID of the Salesforce connection to use"),
|
|
107265
|
+
method: z78.enum(["GET", "POST", "PATCH", "DELETE"]).describe(
|
|
106734
107266
|
"HTTP method. GET for reading resources and SOQL queries, POST for creating, PATCH for updating, DELETE for removing."
|
|
106735
107267
|
),
|
|
106736
|
-
path:
|
|
107268
|
+
path: z78.string().describe(
|
|
106737
107269
|
"API path appended to the instance URL (e.g., '/services/data/v60.0/sobjects/Account', '/services/data/v60.0/query?q=SELECT+Id,Name+FROM+Account+LIMIT+5'). Always start the path with '/services/data/'."
|
|
106738
107270
|
),
|
|
106739
|
-
body:
|
|
107271
|
+
body: z78.record(z78.string(), z78.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
|
|
106740
107272
|
});
|
|
106741
|
-
var
|
|
106742
|
-
|
|
106743
|
-
success:
|
|
106744
|
-
status:
|
|
106745
|
-
data:
|
|
107273
|
+
var outputSchema76 = z78.discriminatedUnion("success", [
|
|
107274
|
+
z78.object({
|
|
107275
|
+
success: z78.literal(true),
|
|
107276
|
+
status: z78.number(),
|
|
107277
|
+
data: z78.record(z78.string(), z78.unknown())
|
|
106746
107278
|
}),
|
|
106747
|
-
|
|
106748
|
-
success:
|
|
106749
|
-
error:
|
|
107279
|
+
z78.object({
|
|
107280
|
+
success: z78.literal(false),
|
|
107281
|
+
error: z78.string()
|
|
106750
107282
|
})
|
|
106751
107283
|
]);
|
|
106752
107284
|
function normalizeInstanceUrl(raw) {
|
|
@@ -106762,8 +107294,8 @@ var requestTool46 = new ConnectorTool({
|
|
|
106762
107294
|
Authentication is handled automatically using the OAuth 2.0 Client Credentials Flow (External Client App or Connected App Consumer Key + Secret). An access token is obtained on each request, so the tool user only provides the API path.
|
|
106763
107295
|
Use this tool for all Salesforce interactions: describing sObjects, running SOQL queries (GET /services/data/vXX.X/query?q=...), reading/creating/updating standard (Account, Contact, Opportunity, Lead, Case) and custom objects.
|
|
106764
107296
|
Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads rather than paginating /sobjects/{Type} endpoints.`,
|
|
106765
|
-
inputSchema:
|
|
106766
|
-
outputSchema:
|
|
107297
|
+
inputSchema: inputSchema76,
|
|
107298
|
+
outputSchema: outputSchema76,
|
|
106767
107299
|
async execute({ connectionId, method, path: path4, body }, connections) {
|
|
106768
107300
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
106769
107301
|
if (!connection) {
|
|
@@ -106776,9 +107308,9 @@ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads ra
|
|
|
106776
107308
|
`[connector-request] salesforce/${connection.name}: ${method} ${path4}`
|
|
106777
107309
|
);
|
|
106778
107310
|
try {
|
|
106779
|
-
const instanceUrlParam =
|
|
106780
|
-
const clientId =
|
|
106781
|
-
const clientSecret =
|
|
107311
|
+
const instanceUrlParam = parameters63.instanceUrl.getValue(connection);
|
|
107312
|
+
const clientId = parameters63.clientId.getValue(connection);
|
|
107313
|
+
const clientSecret = parameters63.clientSecret.getValue(connection);
|
|
106782
107314
|
const instanceUrl = normalizeInstanceUrl(instanceUrlParam);
|
|
106783
107315
|
const tokenBody = new URLSearchParams({
|
|
106784
107316
|
grant_type: "client_credentials",
|
|
@@ -106809,7 +107341,7 @@ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads ra
|
|
|
106809
107341
|
const resolvedInstanceUrl = tokenJson.instance_url ?? instanceUrl;
|
|
106810
107342
|
const url = `${resolvedInstanceUrl}${path4.startsWith("/") ? "" : "/"}${path4}`;
|
|
106811
107343
|
const controller = new AbortController();
|
|
106812
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
107344
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS60);
|
|
106813
107345
|
try {
|
|
106814
107346
|
const response = await fetch(url, {
|
|
106815
107347
|
method,
|
|
@@ -106853,15 +107385,16 @@ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads ra
|
|
|
106853
107385
|
});
|
|
106854
107386
|
|
|
106855
107387
|
// ../connectors/src/connectors/salesforce/index.ts
|
|
106856
|
-
var
|
|
107388
|
+
var tools63 = { request: requestTool46 };
|
|
106857
107389
|
var salesforceConnector = new ConnectorPlugin({
|
|
106858
107390
|
slug: "salesforce",
|
|
106859
107391
|
authType: AUTH_TYPES.API_KEY,
|
|
106860
107392
|
name: "Salesforce",
|
|
106861
107393
|
description: "Connect to Salesforce CRM for accounts, contacts, opportunities, leads, cases, and custom objects via SOQL and the REST API.",
|
|
106862
107394
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6vZlbrUKhxXIiuvWJlb8YB/bbc5e08b88de46c8ed338a74c7d0abb3/salesforce-icon.png",
|
|
106863
|
-
parameters:
|
|
107395
|
+
parameters: parameters63,
|
|
106864
107396
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
107397
|
+
categories: ["crm"],
|
|
106865
107398
|
onboarding: salesforceOnboarding,
|
|
106866
107399
|
systemPrompt: {
|
|
106867
107400
|
en: `### Tools
|
|
@@ -107007,7 +107540,7 @@ export default async function handler(c: Context) {
|
|
|
107007
107540
|
- \u96C6\u8A08: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
|
|
107008
107541
|
- \u89AA\u2192\u5B50\u30B5\u30D6\u30AF\u30A8\u30EA: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``
|
|
107009
107542
|
},
|
|
107010
|
-
tools:
|
|
107543
|
+
tools: tools63
|
|
107011
107544
|
});
|
|
107012
107545
|
|
|
107013
107546
|
// ../connectors/src/connectors/influxdb/setup.ts
|
|
@@ -107069,7 +107602,7 @@ var influxdbOnboarding = new ConnectorOnboarding({
|
|
|
107069
107602
|
});
|
|
107070
107603
|
|
|
107071
107604
|
// ../connectors/src/connectors/influxdb/parameters.ts
|
|
107072
|
-
var
|
|
107605
|
+
var parameters64 = {
|
|
107073
107606
|
url: new ParameterDefinition({
|
|
107074
107607
|
slug: "url",
|
|
107075
107608
|
name: "InfluxDB URL",
|
|
@@ -107109,35 +107642,35 @@ var parameters63 = {
|
|
|
107109
107642
|
};
|
|
107110
107643
|
|
|
107111
107644
|
// ../connectors/src/connectors/influxdb/tools/request.ts
|
|
107112
|
-
import { z as
|
|
107113
|
-
var
|
|
107114
|
-
var
|
|
107115
|
-
toolUseIntent:
|
|
107645
|
+
import { z as z79 } from "zod";
|
|
107646
|
+
var REQUEST_TIMEOUT_MS61 = 6e4;
|
|
107647
|
+
var inputSchema77 = z79.object({
|
|
107648
|
+
toolUseIntent: z79.string().optional().describe(
|
|
107116
107649
|
"Brief description of what you intend to accomplish with this tool call"
|
|
107117
107650
|
),
|
|
107118
|
-
connectionId:
|
|
107119
|
-
method:
|
|
107651
|
+
connectionId: z79.string().describe("ID of the InfluxDB connection to use"),
|
|
107652
|
+
method: z79.enum(["GET", "POST", "DELETE"]).describe(
|
|
107120
107653
|
"HTTP method. POST for SQL/InfluxQL/Flux queries and writes, GET for metadata endpoints, DELETE for delete endpoints."
|
|
107121
107654
|
),
|
|
107122
|
-
path:
|
|
107655
|
+
path: z79.string().describe(
|
|
107123
107656
|
"API path appended to the InfluxDB base URL. Use '/api/v3/query_sql' for InfluxDB 3 SQL, '/api/v3/query_influxql' for InfluxDB 3 InfluxQL, '/api/v2/query?org={org}' for InfluxDB 2 Flux, '/api/v2/write?org={org}&bucket={bucket}' for writes."
|
|
107124
107657
|
),
|
|
107125
|
-
body:
|
|
107658
|
+
body: z79.union([z79.record(z79.string(), z79.unknown()), z79.string()]).optional().describe(
|
|
107126
107659
|
"Request body. JSON object for query endpoints ({ db, q } for InfluxDB 3 SQL; { query, type } for v2 query); raw string for Flux queries and line-protocol writes."
|
|
107127
107660
|
),
|
|
107128
|
-
contentType:
|
|
107661
|
+
contentType: z79.string().optional().describe(
|
|
107129
107662
|
"Content-Type header override. Use 'application/vnd.flux' for Flux queries and 'text/plain; charset=utf-8' for line-protocol writes. Defaults to 'application/json'."
|
|
107130
107663
|
)
|
|
107131
107664
|
});
|
|
107132
|
-
var
|
|
107133
|
-
|
|
107134
|
-
success:
|
|
107135
|
-
status:
|
|
107136
|
-
data:
|
|
107665
|
+
var outputSchema77 = z79.discriminatedUnion("success", [
|
|
107666
|
+
z79.object({
|
|
107667
|
+
success: z79.literal(true),
|
|
107668
|
+
status: z79.number(),
|
|
107669
|
+
data: z79.unknown()
|
|
107137
107670
|
}),
|
|
107138
|
-
|
|
107139
|
-
success:
|
|
107140
|
-
error:
|
|
107671
|
+
z79.object({
|
|
107672
|
+
success: z79.literal(false),
|
|
107673
|
+
error: z79.string()
|
|
107141
107674
|
})
|
|
107142
107675
|
]);
|
|
107143
107676
|
var requestTool47 = new ConnectorTool({
|
|
@@ -107146,8 +107679,8 @@ var requestTool47 = new ConnectorTool({
|
|
|
107146
107679
|
Authentication is handled automatically using the API token (\`Authorization: Token {token}\`). The instance URL is resolved from the connection.
|
|
107147
107680
|
Use this tool for all InfluxDB interactions: running SQL / InfluxQL / Flux queries, writing line protocol, and managing buckets / databases.
|
|
107148
107681
|
For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u2014 they return JSON that is straightforward to parse. Flux queries return annotated CSV.`,
|
|
107149
|
-
inputSchema:
|
|
107150
|
-
outputSchema:
|
|
107682
|
+
inputSchema: inputSchema77,
|
|
107683
|
+
outputSchema: outputSchema77,
|
|
107151
107684
|
async execute({ connectionId, method, path: path4, body, contentType }, connections) {
|
|
107152
107685
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
107153
107686
|
if (!connection) {
|
|
@@ -107160,11 +107693,11 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
|
|
|
107160
107693
|
`[connector-request] influxdb/${connection.name}: ${method} ${path4}`
|
|
107161
107694
|
);
|
|
107162
107695
|
try {
|
|
107163
|
-
const url =
|
|
107164
|
-
const token =
|
|
107696
|
+
const url = parameters64.url.getValue(connection).replace(/\/$/, "");
|
|
107697
|
+
const token = parameters64.token.getValue(connection);
|
|
107165
107698
|
const fullUrl = `${url}${path4.startsWith("/") ? "" : "/"}${path4}`;
|
|
107166
107699
|
const controller = new AbortController();
|
|
107167
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
107700
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS61);
|
|
107168
107701
|
const resolvedContentType = contentType ?? (typeof body === "string" ? "text/plain; charset=utf-8" : "application/json");
|
|
107169
107702
|
const serializedBody = body === void 0 ? void 0 : typeof body === "string" ? body : JSON.stringify(body);
|
|
107170
107703
|
try {
|
|
@@ -107218,15 +107751,16 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
|
|
|
107218
107751
|
});
|
|
107219
107752
|
|
|
107220
107753
|
// ../connectors/src/connectors/influxdb/index.ts
|
|
107221
|
-
var
|
|
107754
|
+
var tools64 = { request: requestTool47 };
|
|
107222
107755
|
var influxdbConnector = new ConnectorPlugin({
|
|
107223
107756
|
slug: "influxdb",
|
|
107224
107757
|
authType: AUTH_TYPES.API_KEY,
|
|
107225
107758
|
name: "InfluxDB",
|
|
107226
107759
|
description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
|
|
107227
107760
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/J1JauVRNmahSVTVrpPfQK/18350d8d3f2dc3be25e8e36ee52914a0/influxdb.png",
|
|
107228
|
-
parameters:
|
|
107761
|
+
parameters: parameters64,
|
|
107229
107762
|
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
107763
|
+
categories: ["database"],
|
|
107230
107764
|
onboarding: influxdbOnboarding,
|
|
107231
107765
|
systemPrompt: {
|
|
107232
107766
|
en: `### Variant Detection
|
|
@@ -107372,7 +107906,7 @@ export default async function handler(c: Context) {
|
|
|
107372
107906
|
- \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
|
|
107373
107907
|
- measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
|
|
107374
107908
|
},
|
|
107375
|
-
tools:
|
|
107909
|
+
tools: tools64,
|
|
107376
107910
|
async checkConnection(params) {
|
|
107377
107911
|
const url = (params.url ?? "").replace(/\/$/, "");
|
|
107378
107912
|
const token = params.token;
|
|
@@ -107468,6 +108002,7 @@ var plugins = {
|
|
|
107468
108002
|
customerio: customerioConnector,
|
|
107469
108003
|
gmail: gmailConnector,
|
|
107470
108004
|
gmailOauth: gmailOauthConnector,
|
|
108005
|
+
googleAuditLog: googleAuditLogConnector,
|
|
107471
108006
|
linkedinAds: linkedinAdsConnector,
|
|
107472
108007
|
zendesk: zendeskConnector,
|
|
107473
108008
|
zendeskOauth: zendeskOauthConnector,
|
|
@@ -107690,62 +108225,62 @@ function resolveParams2(entry, connectionId, plugin) {
|
|
|
107690
108225
|
var { getQuery, loadConnections, reloadEnvFile, watchConnectionsFile } = createConnectorRegistry();
|
|
107691
108226
|
|
|
107692
108227
|
// src/types/server-logic.ts
|
|
107693
|
-
import { z as
|
|
107694
|
-
var parameterMetaSchema =
|
|
107695
|
-
name:
|
|
107696
|
-
type:
|
|
107697
|
-
description:
|
|
107698
|
-
required:
|
|
107699
|
-
default:
|
|
107700
|
-
});
|
|
107701
|
-
var serverLogicCacheConfigSchema =
|
|
107702
|
-
ttl:
|
|
107703
|
-
staleWhileRevalidate:
|
|
107704
|
-
});
|
|
107705
|
-
var serverLogicSchemaObjectSchema =
|
|
107706
|
-
() =>
|
|
107707
|
-
type:
|
|
107708
|
-
format:
|
|
107709
|
-
description:
|
|
107710
|
-
nullable:
|
|
107711
|
-
enum:
|
|
108228
|
+
import { z as z80 } from "zod";
|
|
108229
|
+
var parameterMetaSchema = z80.object({
|
|
108230
|
+
name: z80.string(),
|
|
108231
|
+
type: z80.enum(["string", "number", "boolean"]),
|
|
108232
|
+
description: z80.string(),
|
|
108233
|
+
required: z80.boolean().optional(),
|
|
108234
|
+
default: z80.union([z80.string(), z80.number(), z80.boolean()]).optional()
|
|
108235
|
+
});
|
|
108236
|
+
var serverLogicCacheConfigSchema = z80.object({
|
|
108237
|
+
ttl: z80.number(),
|
|
108238
|
+
staleWhileRevalidate: z80.boolean().optional()
|
|
108239
|
+
});
|
|
108240
|
+
var serverLogicSchemaObjectSchema = z80.lazy(
|
|
108241
|
+
() => z80.object({
|
|
108242
|
+
type: z80.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
|
|
108243
|
+
format: z80.string().optional(),
|
|
108244
|
+
description: z80.string().optional(),
|
|
108245
|
+
nullable: z80.boolean().optional(),
|
|
108246
|
+
enum: z80.array(z80.union([z80.string(), z80.number(), z80.boolean(), z80.null()])).optional(),
|
|
107712
108247
|
items: serverLogicSchemaObjectSchema.optional(),
|
|
107713
|
-
properties:
|
|
107714
|
-
required:
|
|
107715
|
-
additionalProperties:
|
|
107716
|
-
minimum:
|
|
107717
|
-
maximum:
|
|
107718
|
-
minLength:
|
|
107719
|
-
maxLength:
|
|
107720
|
-
pattern:
|
|
108248
|
+
properties: z80.record(z80.string(), serverLogicSchemaObjectSchema).optional(),
|
|
108249
|
+
required: z80.array(z80.string()).optional(),
|
|
108250
|
+
additionalProperties: z80.union([z80.boolean(), serverLogicSchemaObjectSchema]).optional(),
|
|
108251
|
+
minimum: z80.number().optional(),
|
|
108252
|
+
maximum: z80.number().optional(),
|
|
108253
|
+
minLength: z80.number().optional(),
|
|
108254
|
+
maxLength: z80.number().optional(),
|
|
108255
|
+
pattern: z80.string().optional()
|
|
107721
108256
|
})
|
|
107722
108257
|
);
|
|
107723
|
-
var serverLogicMediaTypeSchema =
|
|
108258
|
+
var serverLogicMediaTypeSchema = z80.object({
|
|
107724
108259
|
schema: serverLogicSchemaObjectSchema.optional(),
|
|
107725
|
-
example:
|
|
108260
|
+
example: z80.unknown().optional()
|
|
107726
108261
|
});
|
|
107727
|
-
var serverLogicResponseSchema =
|
|
107728
|
-
description:
|
|
107729
|
-
content:
|
|
108262
|
+
var serverLogicResponseSchema = z80.object({
|
|
108263
|
+
description: z80.string().optional(),
|
|
108264
|
+
content: z80.record(z80.string(), serverLogicMediaTypeSchema).optional()
|
|
107730
108265
|
});
|
|
107731
108266
|
var jsonBaseFields = {
|
|
107732
|
-
description:
|
|
107733
|
-
parameters:
|
|
108267
|
+
description: z80.string(),
|
|
108268
|
+
parameters: z80.array(parameterMetaSchema).optional(),
|
|
107734
108269
|
response: serverLogicResponseSchema.optional(),
|
|
107735
108270
|
cache: serverLogicCacheConfigSchema.optional()
|
|
107736
108271
|
};
|
|
107737
|
-
var jsonSqlServerLogicSchema =
|
|
108272
|
+
var jsonSqlServerLogicSchema = z80.object({
|
|
107738
108273
|
...jsonBaseFields,
|
|
107739
|
-
type:
|
|
107740
|
-
query:
|
|
107741
|
-
connectionId:
|
|
108274
|
+
type: z80.literal("sql").optional(),
|
|
108275
|
+
query: z80.string(),
|
|
108276
|
+
connectionId: z80.string()
|
|
107742
108277
|
});
|
|
107743
|
-
var jsonTypeScriptServerLogicSchema =
|
|
108278
|
+
var jsonTypeScriptServerLogicSchema = z80.object({
|
|
107744
108279
|
...jsonBaseFields,
|
|
107745
|
-
type:
|
|
107746
|
-
handlerPath:
|
|
108280
|
+
type: z80.literal("typescript"),
|
|
108281
|
+
handlerPath: z80.string()
|
|
107747
108282
|
});
|
|
107748
|
-
var anyJsonServerLogicSchema =
|
|
108283
|
+
var anyJsonServerLogicSchema = z80.union([
|
|
107749
108284
|
jsonTypeScriptServerLogicSchema,
|
|
107750
108285
|
jsonSqlServerLogicSchema
|
|
107751
108286
|
]);
|