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