@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.
Files changed (58) hide show
  1. package/dist/cli/index.js +1055 -520
  2. package/dist/connectors/airtable-oauth.js +3 -0
  3. package/dist/connectors/airtable.js +3 -0
  4. package/dist/connectors/amplitude.js +3 -0
  5. package/dist/connectors/anthropic.js +3 -0
  6. package/dist/connectors/asana.js +3 -0
  7. package/dist/connectors/attio.js +3 -0
  8. package/dist/connectors/backlog-api-key.js +3 -0
  9. package/dist/connectors/customerio.js +3 -0
  10. package/dist/connectors/dbt.js +3 -0
  11. package/dist/connectors/gamma.js +3 -0
  12. package/dist/connectors/gemini.js +3 -0
  13. package/dist/connectors/gmail-oauth.js +3 -0
  14. package/dist/connectors/gmail.js +11 -2
  15. package/dist/connectors/google-ads.js +3 -0
  16. package/dist/connectors/google-analytics-oauth.js +3 -0
  17. package/dist/connectors/google-analytics.js +3 -0
  18. package/dist/connectors/google-audit-log.d.ts +5 -0
  19. package/dist/connectors/google-audit-log.js +802 -0
  20. package/dist/connectors/google-calendar-oauth.js +3 -0
  21. package/dist/connectors/google-calendar.js +102 -49
  22. package/dist/connectors/google-docs.js +3 -0
  23. package/dist/connectors/google-drive.js +3 -0
  24. package/dist/connectors/google-sheets.js +3 -0
  25. package/dist/connectors/google-slides.js +3 -0
  26. package/dist/connectors/grafana.js +3 -0
  27. package/dist/connectors/hubspot-oauth.js +3 -0
  28. package/dist/connectors/hubspot.js +3 -0
  29. package/dist/connectors/influxdb.js +3 -0
  30. package/dist/connectors/intercom-oauth.js +3 -0
  31. package/dist/connectors/intercom.js +3 -0
  32. package/dist/connectors/jira-api-key.js +3 -0
  33. package/dist/connectors/kintone-api-token.js +3 -0
  34. package/dist/connectors/kintone.js +3 -0
  35. package/dist/connectors/linear.js +3 -0
  36. package/dist/connectors/linkedin-ads.js +3 -0
  37. package/dist/connectors/mailchimp-oauth.js +3 -0
  38. package/dist/connectors/mailchimp.js +3 -0
  39. package/dist/connectors/meta-ads-oauth.js +3 -0
  40. package/dist/connectors/meta-ads.js +3 -0
  41. package/dist/connectors/mixpanel.js +3 -0
  42. package/dist/connectors/notion-oauth.js +3 -0
  43. package/dist/connectors/notion.js +3 -0
  44. package/dist/connectors/openai.js +3 -0
  45. package/dist/connectors/salesforce.js +3 -0
  46. package/dist/connectors/sentry.js +3 -0
  47. package/dist/connectors/shopify-oauth.js +3 -0
  48. package/dist/connectors/shopify.js +3 -0
  49. package/dist/connectors/stripe-api-key.js +3 -0
  50. package/dist/connectors/stripe-oauth.js +3 -0
  51. package/dist/connectors/tiktok-ads.js +3 -0
  52. package/dist/connectors/wix-store.js +3 -0
  53. package/dist/connectors/zendesk-oauth.js +3 -0
  54. package/dist/connectors/zendesk.js +3 -0
  55. package/dist/index.js +1055 -520
  56. package/dist/main.js +1055 -520
  57. package/dist/vite-plugin.js +1055 -520
  58. package/package.json +5 -1
@@ -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 z80 = new Uint8Array(16), x6 = new Uint8Array(64);
912
+ var z81 = new Uint8Array(16), x6 = new Uint8Array(64);
913
913
  var u6, i6;
914
- for (i6 = 0; i6 < 16; i6++) z80[i6] = 0;
915
- for (i6 = 0; i6 < 8; i6++) z80[i6] = n6[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, z80, k6, sigma);
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 + (z80[i6] & 255) | 0;
922
- z80[i6] = u6 & 255;
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, z80, k6, sigma);
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 z80 = new Uint8Array(16), x6 = new Uint8Array(64);
936
+ var z81 = new Uint8Array(16), x6 = new Uint8Array(64);
937
937
  var u6, i6;
938
- for (i6 = 0; i6 < 16; i6++) z80[i6] = 0;
939
- for (i6 = 0; i6 < 8; i6++) z80[i6] = n6[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, z80, k6, sigma);
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 + (z80[i6] & 255) | 0;
946
- z80[i6] = u6 & 255;
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, z80, k6, sigma);
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 z80 = new Uint8Array(32);
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++) z80[i6] = n6[i6];
1837
- z80[31] = n6[31] & 127 | 64;
1838
- z80[0] &= 248;
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 = z80[i6 >>> 3] >>> (i6 & 7) & 1;
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, z80 = "object" === typeof process && "object" === typeof process.versions && "string" === typeof process.versions.node, B2 = "", C2, D2, E2, F2, G2;
4864
- if (z80) B2 = y3 ? __require("path").dirname(B2) + "/" : __dirname + "/", C2 = function(a6, c6) {
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 z80 && z80) {
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 z80 = struct[4].length;
39043
+ const z81 = struct[4].length;
39044
39044
  let it = struct[anno.it];
39045
- if (it && z80 === it.length) {
39045
+ if (it && z81 === it.length) {
39046
39046
  yield* it;
39047
39047
  return;
39048
39048
  }
39049
- it = Array(z80);
39050
- for (let i6 = 0; i6 < z80; ++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 z80 = value.length;
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 < z80; ++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 z81 = v7.length;
39753
- if (z81 < 2) {
39752
+ const z82 = v7.length;
39753
+ if (z82 < 2) {
39754
39754
  return v7;
39755
39755
  }
39756
- if (v7[0] === `"` && v7[z81 - 1] === `"`) {
39757
- v7 = v7.slice(1, z81 - 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: parameters64 } = this;
41156
- if (parameters64.length === 0) {
41155
+ const { parameters: parameters65 } = this;
41156
+ if (parameters65.length === 0) {
41157
41157
  return false;
41158
41158
  }
41159
- for (const param of parameters64) {
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: parameters64, rules } = ruleSetObject;
41876
+ const { parameters: parameters65, rules } = ruleSetObject;
41877
41877
  options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
41878
- const paramsWithDefault = Object.entries(parameters64).filter(([, v7]) => v7.default != null).map(([k6, v7]) => [k6, v7.default]);
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(parameters64).filter(([, v7]) => v7.required).map(([k6]) => k6);
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, inputSchema77) {
47495
- const members = inputSchema77.getMemberSchemas();
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 (!inputSchema77.isUnitSchema()) {
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 inputSchema77 = NormalizedSchema.of(operationSchema.input);
48353
+ const inputSchema78 = NormalizedSchema.of(operationSchema.input);
48354
48354
  if (!request2.headers["content-type"]) {
48355
- const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema77);
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 outputSchema77 = NormalizedSchema.of(operationSchema.output);
48368
- for (const [name, member2] of outputSchema77.structIterator()) {
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(parameters64) {
52232
+ function fromCognitoIdentity(parameters65) {
52233
52233
  return async (awsIdentityProperties) => {
52234
- parameters64.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity");
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) => parameters64.clientConfig?.[property] ?? parameters64.parentClientConfig?.[property] ?? awsIdentityProperties?.callerClientConfig?.[property];
52237
- const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters64.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters64.logger), SessionToken } = throwOnMissingCredentials(parameters64.logger) } = await (parameters64.client ?? new CognitoIdentityClient2(Object.assign({}, parameters64.clientConfig ?? {}, {
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: parameters64.customRoleArn,
52243
- IdentityId: parameters64.identityId,
52244
- Logins: parameters64.logins ? await resolveLogins(parameters64.logins) : void 0
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: parameters64.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, z80, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
64808
+ var s6, z81, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
64809
64809
  for (; i6 < j6; ) {
64810
64810
  s6 = a6[i6++] + "";
64811
- z80 = LOG_BASE - s6.length;
64812
- for (; z80--; s6 = "0" + s6) ;
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, z80) {
64845
+ function toFixedPoint(str, e6, z81) {
64846
64846
  var len, zs;
64847
64847
  if (e6 < 0) {
64848
- for (zs = z80 + "."; ++e6; zs += z80) ;
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 = z80, e6 -= len; --e6; zs += z80) ;
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 { success: true, status: response.status, data };
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 { success: true, status: response.status, data };
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\u767A\u898B\u30FB\u9078\u629E\u3057\u3066 Project Knowledge \u306B\u8A18\u9332\u3057\u307E\u3059\u3002
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\u306E\u767A\u898B\u3068\u9078\u629E (\`"service-account"\` \u307E\u305F\u306F \`"both"\` \u306E\u5834\u5408)
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
- 1. \`${requestToolName}\` \u3092\u547C\u3093\u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
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\`: \`"/users/me/calendarList"\`
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
- 2. \u53D6\u5F97\u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
91565
- - \u7D50\u679C\u304C\u7A7A: \u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u304C \`"service-account"\` \u3060\u3051\u306A\u3089\u30B9\u30C6\u30C3\u30D7 5 (\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3) \u3078\u3002\`"both"\` \u306E\u5834\u5408\u306F\u305D\u306E\u307E\u307E\u30B9\u30C6\u30C3\u30D7 3 \u3078\u9032\u3080
91566
- - \u7D50\u679C\u304C\u3042\u308B: \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u9078\u3070\u305B\u308B
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\u306E\u767A\u898B\u3068\u9078\u629E (\`"delegation"\` \u307E\u305F\u306F \`"both"\` \u306E\u5834\u5408)
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\u3001\u3053\u306E\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5BFE\u3057\u3066\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u3092\u3042\u3089\u304B\u3058\u3081\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
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. \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\u3057\u3001\u5404 \`<email>\` \u306B\u3064\u3044\u3066 \`${requestWithDelegationToolName}\` \u3092\u547C\u3076:
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. \u53D6\u5F97\u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
91585
- - \u5168 email \u3067\u53D6\u5F97\u5931\u6557: \u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u304C \`"delegation"\` \u3060\u3051\u3001\u3082\u3057\u304F\u306F \`"both"\` \u3067\u30B9\u30C6\u30C3\u30D7 2 \u3067\u3082 0 \u4EF6\u306E\u5834\u5408\u306F\u30B9\u30C6\u30C3\u30D7 5 \u3078\u3002\`"both"\` \u3067\u30B9\u30C6\u30C3\u30D7 2 \u306B\u30AB\u30EC\u30F3\u30C0\u30FC\u304C\u3042\u3063\u305F\u5834\u5408\u306F\u305D\u306E\u307E\u307E\u30B9\u30C6\u30C3\u30D7 4 \u3078
91586
- - \u4E00\u90E8\u307E\u305F\u306F\u5168\u4EF6\u6210\u529F: \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u9078\u3070\u305B\u308B
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\u9078\u3070\u308C\u305F calendarId \u96C6\u5408\u3092\u30C7\u30A3\u30B9\u30AB\u30D0\u30EA\u7D50\u679C\u3068\u7A81\u304D\u5408\u308F\u305B\u3066\u3001\u5404\u30AB\u30EC\u30F3\u30C0\u30FC\u306E\u7D4C\u8DEF\u3068 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:
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\u5834\u5408\u306E\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3
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\u9078\u629E\u30AB\u30EC\u30F3\u30C0\u30FC\u304C 1 \u4EF6\u3082\u7121\u3044\u5834\u5408 (\u5404\u7D4C\u8DEF\u306E\u767A\u898B\u304C\u7A7A\u3001\u307E\u305F\u306F\u9078\u629E\u3055\u308C\u306A\u304B\u3063\u305F)\u3001\u30A8\u30E9\u30FC\u30EC\u30B9\u30DD\u30F3\u30B9\u304B\u3089 \`serviceAccountEmail\` \u3092\u53D6\u308A\u51FA\u3057\u3001\`askUserQuestion\` \u3067\u6B21\u306E\u3088\u3046\u306B\u6848\u5185\u3059\u308B:
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\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8: \`<serviceAccountEmail>\`\u3002\u300D
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 (\u5177\u4F53\u7684\u306A\u3084\u308A\u76F4\u3057\u65B9\u306F\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306B\u4EFB\u305B\u308B)
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 1 \u304B\u3089\u518D\u5B9F\u884C
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, discover and select the target calendars, and record them in Project Knowledge.
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: Discover and select via the service-account path (when \`"service-account"\` or \`"both"\`)
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
- 1. Call \`${requestToolName}\`:
91698
+ 2. For each calendar ID \`<id>\`, verify access by calling \`${requestToolName}\`:
91635
91699
  - \`method\`: \`"GET"\`
91636
- - \`path\`: \`"/users/me/calendarList"\`
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
- 2. Branch on the result:
91640
- - Empty: if the access method is \`"service-account"\` only, jump to Step 5. If \`"both"\`, continue to Step 3.
91641
- - Non-empty: ask the user to pick:
91642
- - \`type\`: \`"multiSelect"\`
91643
- - \`question\`: "Select the calendars to use (multiple allowed)"
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
- ## Step 3: Discover and select via the Domain-wide Delegation path (when \`"delegation"\` or \`"both"\`)
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 this service account in advance ([admin setup guide](https://support.google.com/a/answer/162106))."
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. Extract individual emails and, for each \`<email>\`, call \`${requestWithDelegationToolName}\`:
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: if the access method is \`"delegation"\` only, or it's \`"both"\` but Step 2 also produced 0 calendars, jump to Step 5. If \`"both"\` and Step 2 had calendars, proceed to Step 4.
91661
- - Any success: ask the user to pick:
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 that briefly in one sentence.
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 selected in Steps 2 and 3, cross-reference the discovery results to recover each calendar's access path and subject, and call \`finalizeSetup\`. Under \`#### \u30B9\u30B3\u30FC\u30D7\` in \`projectKnowledge\`, list each calendar on its own line:
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
- If the final selected calendar set is empty (every attempted path returned nothing, or the user picked nothing), take \`serviceAccountEmail\` from any failed tool response and call \`askUserQuestion\`:
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 (leave the exact retry plan to the agent)
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 1
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 { success: true, status: response.status, data };
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/linkedin-ads/tools/list-ad-accounts.ts
103368
+ // ../connectors/src/connectors/google-audit-log/tools/request-with-delegation.ts
103260
103369
  import { z as z65 } from "zod";
103261
- var BASE_URL30 = "https://api.linkedin.com/rest/";
103262
- var LINKEDIN_VERSION = "202603";
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 inputSchema63 = z65.object({
103296
- toolUseIntent: z65.string().optional().describe(
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: z65.string().describe("ID of the LinkedIn Ads OAuth connection to use")
103821
+ connectionId: z66.string().describe("ID of the LinkedIn Ads OAuth connection to use")
103300
103822
  });
103301
- var outputSchema63 = z65.discriminatedUnion("success", [
103302
- z65.object({
103303
- success: z65.literal(true),
103304
- adAccounts: z65.array(
103305
- z65.object({
103306
- adAccountId: z65.string(),
103307
- name: z65.string()
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
- z65.object({
103312
- success: z65.literal(false),
103313
- error: z65.string()
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: inputSchema63,
103320
- outputSchema: outputSchema63,
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(), REQUEST_TIMEOUT_MS48);
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: `${BASE_URL30}adAccounts?q=search&search=(status:(values:List(ACTIVE)))&pageSize=100`,
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 parameters52 = {
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 z66 } from "zod";
103428
- var BASE_URL31 = "https://api.linkedin.com/rest/";
103949
+ import { z as z67 } from "zod";
103950
+ var BASE_URL32 = "https://api.linkedin.com/rest/";
103429
103951
  var LINKEDIN_VERSION2 = "202603";
103430
- var REQUEST_TIMEOUT_MS49 = 6e4;
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 inputSchema64 = z66.object({
103463
- toolUseIntent: z66.string().optional().describe(
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: z66.string().describe("ID of the LinkedIn Ads OAuth connection to use"),
103467
- method: z66.enum(["GET", "POST", "DELETE"]).describe("HTTP method"),
103468
- path: z66.string().describe(
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: z66.record(z66.string(), z66.string()).optional().describe("Query parameters to append to the URL"),
103472
- body: z66.record(z66.string(), z66.unknown()).optional().describe("Request body (JSON). For partial updates, use the patch format: { patch: { $set: { ... } } }")
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 outputSchema64 = z66.discriminatedUnion("success", [
103475
- z66.object({
103476
- success: z66.literal(true),
103477
- status: z66.number(),
103478
- data: z66.unknown()
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
- z66.object({
103481
- success: z66.literal(false),
103482
- error: z66.string()
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: inputSchema64,
103492
- outputSchema: outputSchema64,
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 = parameters52.adAccountId.tryGetValue(connection) ?? "";
104027
+ const adAccountId = parameters53.adAccountId.tryGetValue(connection) ?? "";
103506
104028
  const resolvedPath = adAccountId ? path4.replace(/\{adAccountId\}/g, adAccountId) : path4;
103507
- let url = `${BASE_URL31}${resolvedPath}`;
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(), REQUEST_TIMEOUT_MS49);
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 tools52 = {
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: parameters52,
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: tools52,
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 parameters53 = {
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 z67 } from "zod";
103845
- var REQUEST_TIMEOUT_MS50 = 6e4;
103846
- var inputSchema65 = z67.object({
103847
- toolUseIntent: z67.string().optional().describe(
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: z67.string().describe("ID of the Zendesk connection to use"),
103851
- method: z67.enum(["GET", "POST", "PUT", "DELETE"]).describe(
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: z67.string().describe(
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: z67.record(z67.string(), z67.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104380
+ body: z68.record(z68.string(), z68.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
103858
104381
  });
103859
- var outputSchema65 = z67.discriminatedUnion("success", [
103860
- z67.object({
103861
- success: z67.literal(true),
103862
- status: z67.number(),
103863
- data: z67.record(z67.string(), z67.unknown())
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
- z67.object({
103866
- success: z67.literal(false),
103867
- error: z67.string()
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: inputSchema65,
103877
- outputSchema: outputSchema65,
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 = parameters53.subdomain.getValue(connection);
103891
- const email = parameters53.email.getValue(connection);
103892
- const apiToken = parameters53.apiToken.getValue(connection);
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(), REQUEST_TIMEOUT_MS50);
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 tools53 = { request: requestTool37 };
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: parameters53,
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: tools53
104634
+ tools: tools54
104111
104635
  });
104112
104636
 
104113
104637
  // ../connectors/src/connectors/zendesk-oauth/tools/request.ts
104114
- import { z as z68 } from "zod";
104115
- var REQUEST_TIMEOUT_MS51 = 6e4;
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 inputSchema66 = z68.object({
104148
- toolUseIntent: z68.string().optional().describe(
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: z68.string().describe("ID of the Zendesk OAuth connection to use"),
104152
- method: z68.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
104153
- path: z68.string().describe(
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: z68.record(z68.string(), z68.string()).optional().describe("Query parameters to append to the URL"),
104157
- body: z68.record(z68.string(), z68.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
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 outputSchema66 = z68.discriminatedUnion("success", [
104160
- z68.object({
104161
- success: z68.literal(true),
104162
- status: z68.number(),
104163
- data: z68.record(z68.string(), z68.unknown())
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
- z68.object({
104166
- success: z68.literal(false),
104167
- error: z68.string()
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: inputSchema66,
104177
- outputSchema: outputSchema66,
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(), REQUEST_TIMEOUT_MS51);
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 parameters54 = {};
104792
+ var parameters55 = {};
104269
104793
 
104270
104794
  // ../connectors/src/connectors/zendesk-oauth/index.ts
104271
- var tools54 = { request: requestTool38 };
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: parameters54,
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: tools54,
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 parameters55 = {
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 z69 } from "zod";
104460
- var BASE_URL32 = "https://api.intercom.io";
104984
+ import { z as z70 } from "zod";
104985
+ var BASE_URL33 = "https://api.intercom.io";
104461
104986
  var API_VERSION = "2.11";
104462
- var REQUEST_TIMEOUT_MS52 = 6e4;
104463
- var inputSchema67 = z69.object({
104464
- toolUseIntent: z69.string().optional().describe(
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: z69.string().describe("ID of the Intercom connection to use"),
104468
- method: z69.enum(["GET", "POST", "PUT", "DELETE"]).describe(
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: z69.string().describe(
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: z69.record(z69.string(), z69.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104999
+ body: z70.record(z70.string(), z70.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104475
105000
  });
104476
- var outputSchema67 = z69.discriminatedUnion("success", [
104477
- z69.object({
104478
- success: z69.literal(true),
104479
- status: z69.number(),
104480
- data: z69.record(z69.string(), z69.unknown())
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
- z69.object({
104483
- success: z69.literal(false),
104484
- error: z69.string()
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: inputSchema67,
104496
- outputSchema: outputSchema67,
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 = parameters55.accessToken.getValue(connection);
104510
- const url = `${BASE_URL32}${path4.startsWith("/") ? "" : "/"}${path4}`;
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(), REQUEST_TIMEOUT_MS52);
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 tools55 = { request: requestTool39 };
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: parameters55,
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: tools55
105273
+ tools: tools56
104748
105274
  });
104749
105275
 
104750
105276
  // ../connectors/src/connectors/intercom-oauth/tools/request.ts
104751
- import { z as z70 } from "zod";
104752
- var BASE_URL33 = "https://api.intercom.io";
104753
- var REQUEST_TIMEOUT_MS53 = 6e4;
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 inputSchema68 = z70.object({
104786
- toolUseIntent: z70.string().optional().describe(
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: z70.string().describe("ID of the Intercom OAuth connection to use"),
104790
- method: z70.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
104791
- path: z70.string().describe(
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: z70.record(z70.string(), z70.string()).optional().describe("Query parameters to append to the URL"),
104795
- body: z70.record(z70.string(), z70.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
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 outputSchema68 = z70.discriminatedUnion("success", [
104798
- z70.object({
104799
- success: z70.literal(true),
104800
- status: z70.number(),
104801
- data: z70.record(z70.string(), z70.unknown())
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
- z70.object({
104804
- success: z70.literal(false),
104805
- error: z70.string()
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: inputSchema68,
104816
- outputSchema: outputSchema68,
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 = `${BASE_URL33}${path4.startsWith("/") ? "" : "/"}${path4}`;
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(), REQUEST_TIMEOUT_MS53);
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 parameters56 = {};
105434
+ var parameters57 = {};
104909
105435
 
104910
105436
  // ../connectors/src/connectors/intercom-oauth/index.ts
104911
- var tools56 = { request: requestTool40 };
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: parameters56,
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: tools56,
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 parameters57 = {
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 z71 } from "zod";
105133
- var REQUEST_TIMEOUT_MS54 = 6e4;
105134
- var inputSchema69 = z71.object({
105135
- toolUseIntent: z71.string().optional().describe(
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: z71.string().describe("ID of the Mixpanel connection to use"),
105139
- method: z71.enum(["GET", "POST"]).describe(
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: z71.string().describe(
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: z71.string().optional().describe(
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: z71.enum(["application/json", "application/x-www-form-urlencoded"]).optional().describe(
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 outputSchema69 = z71.discriminatedUnion("success", [
105153
- z71.object({
105154
- success: z71.literal(true),
105155
- status: z71.number(),
105156
- data: z71.unknown()
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
- z71.object({
105159
- success: z71.literal(false),
105160
- error: z71.string()
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: inputSchema69,
105182
- outputSchema: outputSchema69,
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 = parameters57.serviceAccountUsername.getValue(connection);
105196
- const secret = parameters57.serviceAccountSecret.getValue(connection);
105197
- const projectId = parameters57.projectId.getValue(connection);
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(), REQUEST_TIMEOUT_MS54);
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 tools57 = { request: requestTool41 };
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: parameters57,
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: tools57
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 parameters58 = {
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 z72 } from "zod";
105426
- var REQUEST_TIMEOUT_MS55 = 6e4;
105427
- var inputSchema70 = z72.object({
105428
- toolUseIntent: z72.string().optional().describe(
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: z72.string().describe("ID of the Grafana connection to use"),
105432
- method: z72.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).describe(
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: z72.string().describe(
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: z72.record(z72.string(), z72.unknown()).optional().describe("Request body (JSON). Required for POST/PUT/PATCH requests.")
105966
+ body: z73.record(z73.string(), z73.unknown()).optional().describe("Request body (JSON). Required for POST/PUT/PATCH requests.")
105439
105967
  });
105440
- var outputSchema70 = z72.discriminatedUnion("success", [
105441
- z72.object({
105442
- success: z72.literal(true),
105443
- status: z72.number(),
105444
- data: z72.unknown()
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
- z72.object({
105447
- success: z72.literal(false),
105448
- error: z72.string()
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: inputSchema70,
105458
- outputSchema: outputSchema70,
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 = parameters58.url.getValue(connection).replace(/\/+$/, "");
105472
- const apiKey = parameters58.apiKey.getValue(connection);
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
- REQUEST_TIMEOUT_MS55
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 tools58 = { request: requestTool42 };
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: parameters58,
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: tools58
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 parameters59 = {
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 z73 } from "zod";
105676
- var REQUEST_TIMEOUT_MS56 = 6e4;
105677
- var inputSchema71 = z73.object({
105678
- toolUseIntent: z73.string().optional().describe("Brief description of what you intend to accomplish with this tool call"),
105679
- connectionId: z73.string().describe("ID of the Backlog connection to use"),
105680
- method: z73.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).describe("HTTP method. Use GET to read resources, POST to create, PATCH/PUT to update, DELETE to remove."),
105681
- path: z73.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."),
105682
- body: z73.record(z73.string(), z73.unknown()).optional().describe("Request body as JSON object. Required for POST, PUT, and PATCH requests (e.g., issue creation, comment addition).")
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 outputSchema71 = z73.discriminatedUnion("success", [
105685
- z73.object({
105686
- success: z73.literal(true),
105687
- status: z73.number(),
105688
- data: z73.union([z73.record(z73.string(), z73.unknown()), z73.array(z73.unknown())])
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
- z73.object({
105691
- success: z73.literal(false),
105692
- error: z73.string()
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: inputSchema71,
105703
- outputSchema: outputSchema71,
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 = parameters59.spaceUrl.getValue(connection);
105712
- const apiKey = parameters59.apiKey.getValue(connection);
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(), REQUEST_TIMEOUT_MS56);
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 tools59 = { request: requestTool43 };
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: parameters59,
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: tools59
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 parameters60 = {
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 z74 } from "zod";
105938
- var BASE_URL34 = "https://public-api.gamma.app/v1.0";
105939
- var REQUEST_TIMEOUT_MS57 = 6e4;
105940
- var inputSchema72 = z74.object({
105941
- toolUseIntent: z74.string().optional().describe(
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: z74.string().describe("ID of the Gamma connection to use"),
105945
- method: z74.enum(["GET", "POST"]).describe("HTTP method. GET for listing resources, POST for creating."),
105946
- path: z74.string().describe(
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: z74.record(z74.string(), z74.unknown()).optional().describe("Request body (JSON) for POST requests")
106479
+ body: z75.record(z75.string(), z75.unknown()).optional().describe("Request body (JSON) for POST requests")
105950
106480
  });
105951
- var outputSchema72 = z74.discriminatedUnion("success", [
105952
- z74.object({
105953
- success: z74.literal(true),
105954
- status: z74.number(),
105955
- data: z74.unknown()
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
- z74.object({
105958
- success: z74.literal(false),
105959
- error: z74.string()
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: inputSchema72,
105969
- outputSchema: outputSchema72,
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 = parameters60.apiKey.getValue(connection);
105983
- const url = `${BASE_URL34}${path4}`;
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(), REQUEST_TIMEOUT_MS57);
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 z75 } from "zod";
106015
- var BASE_URL35 = "https://public-api.gamma.app/v1.0";
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 inputSchema73 = z75.object({
106019
- toolUseIntent: z75.string().optional().describe(
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: z75.string().describe("ID of the Gamma connection to use"),
106023
- inputText: z75.string().describe(
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: z75.enum(["generate", "condense", "preserve"]).describe(
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: z75.enum(["presentation", "document", "webpage", "social"]).optional().describe("Type of artifact to create. Defaults to 'presentation'."),
106030
- numCards: z75.number().int().min(1).max(75).optional().describe("Number of cards/slides. Defaults to 10."),
106031
- themeId: z75.string().optional().describe(
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: z75.string().optional().describe(
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: z75.string().optional().describe(
106567
+ audience: z76.string().optional().describe(
106038
106568
  "Target audience description (e.g., 'marketing executives'). Max 500 chars."
106039
106569
  ),
106040
- language: z75.string().optional().describe("Output language code (e.g., 'en', 'ja'). Defaults to 'en'."),
106041
- textAmount: z75.enum(["brief", "medium", "detailed", "extensive"]).optional().describe("Text volume per card. Defaults to 'medium'."),
106042
- imageSource: z75.enum([
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: z75.string().optional().describe(
106584
+ additionalInstructions: z76.string().optional().describe(
106055
106585
  "Additional specifications for content, layout, and aesthetics. Max 5000 chars."
106056
106586
  ),
106057
- exportAs: z75.enum(["pdf", "pptx", "png"]).optional().describe("Export file format. If omitted, no export file is generated.")
106587
+ exportAs: z76.enum(["pdf", "pptx", "png"]).optional().describe("Export file format. If omitted, no export file is generated.")
106058
106588
  });
106059
- var outputSchema73 = z75.discriminatedUnion("success", [
106060
- z75.object({
106061
- success: z75.literal(true),
106062
- generationId: z75.string(),
106063
- gammaId: z75.string(),
106064
- gammaUrl: z75.string(),
106065
- exportUrl: z75.string().optional(),
106066
- credits: z75.object({
106067
- deducted: z75.number(),
106068
- remaining: z75.number()
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
- z75.object({
106072
- success: z75.literal(false),
106073
- error: z75.string()
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: inputSchema73,
106083
- outputSchema: outputSchema73,
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 = parameters60.apiKey.getValue(connection);
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(`${BASE_URL35}/generations`, {
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(`${BASE_URL35}/generations/${generationId}`, {
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 tools60 = { request: requestTool44, generate: generateTool };
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: parameters60,
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: tools60
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 parameters61 = {
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 z76 } from "zod";
106389
- var BASE_URL36 = "https://sentry.io/api/0";
106390
- var REQUEST_TIMEOUT_MS58 = 6e4;
106391
- var inputSchema74 = z76.object({
106392
- toolUseIntent: z76.string().optional().describe(
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: z76.string().describe("ID of the Sentry connection to use"),
106396
- method: z76.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
106397
- path: z76.string().describe(
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: z76.record(z76.string(), z76.unknown()).optional().describe("JSON request body for POST/PUT requests")
106931
+ body: z77.record(z77.string(), z77.unknown()).optional().describe("JSON request body for POST/PUT requests")
106401
106932
  });
106402
- var outputSchema74 = z76.discriminatedUnion("success", [
106403
- z76.object({
106404
- success: z76.literal(true),
106405
- status: z76.number(),
106406
- data: z76.unknown()
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
- z76.object({
106409
- success: z76.literal(false),
106410
- error: z76.string()
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: inputSchema74,
106420
- outputSchema: outputSchema74,
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 = parameters61.authToken.getValue(connection);
106434
- const organizationSlug = parameters61.organizationSlug.getValue(connection);
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 = `${BASE_URL36}${resolvedPath.startsWith("/") ? "" : "/"}${resolvedPath}`;
106970
+ const url = `${BASE_URL37}${resolvedPath.startsWith("/") ? "" : "/"}${resolvedPath}`;
106440
106971
  const controller = new AbortController();
106441
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS58);
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 tools61 = { request: requestTool45 };
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: parameters61,
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: tools61,
107178
+ tools: tools62,
106647
107179
  async checkConnection(params) {
106648
- const authToken = params[parameters61.authToken.slug];
106649
- const organizationSlug = params[parameters61.organizationSlug.slug];
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 parameters62 = {
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 z77 } from "zod";
106727
- var REQUEST_TIMEOUT_MS59 = 6e4;
106728
- var inputSchema75 = z77.object({
106729
- toolUseIntent: z77.string().optional().describe(
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: z77.string().describe("ID of the Salesforce connection to use"),
106733
- method: z77.enum(["GET", "POST", "PATCH", "DELETE"]).describe(
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: z77.string().describe(
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: z77.record(z77.string(), z77.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
107271
+ body: z78.record(z78.string(), z78.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
106740
107272
  });
106741
- var outputSchema75 = z77.discriminatedUnion("success", [
106742
- z77.object({
106743
- success: z77.literal(true),
106744
- status: z77.number(),
106745
- data: z77.record(z77.string(), z77.unknown())
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
- z77.object({
106748
- success: z77.literal(false),
106749
- error: z77.string()
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: inputSchema75,
106766
- outputSchema: outputSchema75,
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 = parameters62.instanceUrl.getValue(connection);
106780
- const clientId = parameters62.clientId.getValue(connection);
106781
- const clientSecret = parameters62.clientSecret.getValue(connection);
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(), REQUEST_TIMEOUT_MS59);
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 tools62 = { request: requestTool46 };
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: parameters62,
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: tools62
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 parameters63 = {
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 z78 } from "zod";
107113
- var REQUEST_TIMEOUT_MS60 = 6e4;
107114
- var inputSchema76 = z78.object({
107115
- toolUseIntent: z78.string().optional().describe(
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: z78.string().describe("ID of the InfluxDB connection to use"),
107119
- method: z78.enum(["GET", "POST", "DELETE"]).describe(
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: z78.string().describe(
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: z78.union([z78.record(z78.string(), z78.unknown()), z78.string()]).optional().describe(
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: z78.string().optional().describe(
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 outputSchema76 = z78.discriminatedUnion("success", [
107133
- z78.object({
107134
- success: z78.literal(true),
107135
- status: z78.number(),
107136
- data: z78.unknown()
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
- z78.object({
107139
- success: z78.literal(false),
107140
- error: z78.string()
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: inputSchema76,
107150
- outputSchema: outputSchema76,
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 = parameters63.url.getValue(connection).replace(/\/$/, "");
107164
- const token = parameters63.token.getValue(connection);
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(), REQUEST_TIMEOUT_MS60);
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 tools63 = { request: requestTool47 };
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: parameters63,
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: tools63,
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 z79 } from "zod";
107694
- var parameterMetaSchema = z79.object({
107695
- name: z79.string(),
107696
- type: z79.enum(["string", "number", "boolean"]),
107697
- description: z79.string(),
107698
- required: z79.boolean().optional(),
107699
- default: z79.union([z79.string(), z79.number(), z79.boolean()]).optional()
107700
- });
107701
- var serverLogicCacheConfigSchema = z79.object({
107702
- ttl: z79.number(),
107703
- staleWhileRevalidate: z79.boolean().optional()
107704
- });
107705
- var serverLogicSchemaObjectSchema = z79.lazy(
107706
- () => z79.object({
107707
- type: z79.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
107708
- format: z79.string().optional(),
107709
- description: z79.string().optional(),
107710
- nullable: z79.boolean().optional(),
107711
- enum: z79.array(z79.union([z79.string(), z79.number(), z79.boolean(), z79.null()])).optional(),
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: z79.record(z79.string(), serverLogicSchemaObjectSchema).optional(),
107714
- required: z79.array(z79.string()).optional(),
107715
- additionalProperties: z79.union([z79.boolean(), serverLogicSchemaObjectSchema]).optional(),
107716
- minimum: z79.number().optional(),
107717
- maximum: z79.number().optional(),
107718
- minLength: z79.number().optional(),
107719
- maxLength: z79.number().optional(),
107720
- pattern: z79.string().optional()
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 = z79.object({
108258
+ var serverLogicMediaTypeSchema = z80.object({
107724
108259
  schema: serverLogicSchemaObjectSchema.optional(),
107725
- example: z79.unknown().optional()
108260
+ example: z80.unknown().optional()
107726
108261
  });
107727
- var serverLogicResponseSchema = z79.object({
107728
- description: z79.string().optional(),
107729
- content: z79.record(z79.string(), serverLogicMediaTypeSchema).optional()
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: z79.string(),
107733
- parameters: z79.array(parameterMetaSchema).optional(),
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 = z79.object({
108272
+ var jsonSqlServerLogicSchema = z80.object({
107738
108273
  ...jsonBaseFields,
107739
- type: z79.literal("sql").optional(),
107740
- query: z79.string(),
107741
- connectionId: z79.string()
108274
+ type: z80.literal("sql").optional(),
108275
+ query: z80.string(),
108276
+ connectionId: z80.string()
107742
108277
  });
107743
- var jsonTypeScriptServerLogicSchema = z79.object({
108278
+ var jsonTypeScriptServerLogicSchema = z80.object({
107744
108279
  ...jsonBaseFields,
107745
- type: z79.literal("typescript"),
107746
- handlerPath: z79.string()
108280
+ type: z80.literal("typescript"),
108281
+ handlerPath: z80.string()
107747
108282
  });
107748
- var anyJsonServerLogicSchema = z79.union([
108283
+ var anyJsonServerLogicSchema = z80.union([
107749
108284
  jsonTypeScriptServerLogicSchema,
107750
108285
  jsonSqlServerLogicSchema
107751
108286
  ]);