@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/cli/index.js CHANGED
@@ -910,17 +910,17 @@ var require_nacl_fast = __commonJS({
910
910
  }
911
911
  var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
912
912
  function crypto_stream_salsa20_xor(c6, cpos, m6, mpos, b6, n6, k6) {
913
- var z80 = new Uint8Array(16), x6 = new Uint8Array(64);
913
+ var z81 = new Uint8Array(16), x6 = new Uint8Array(64);
914
914
  var u6, i6;
915
- for (i6 = 0; i6 < 16; i6++) z80[i6] = 0;
916
- for (i6 = 0; i6 < 8; i6++) z80[i6] = n6[i6];
915
+ for (i6 = 0; i6 < 16; i6++) z81[i6] = 0;
916
+ for (i6 = 0; i6 < 8; i6++) z81[i6] = n6[i6];
917
917
  while (b6 >= 64) {
918
- crypto_core_salsa20(x6, z80, k6, sigma);
918
+ crypto_core_salsa20(x6, z81, k6, sigma);
919
919
  for (i6 = 0; i6 < 64; i6++) c6[cpos + i6] = m6[mpos + i6] ^ x6[i6];
920
920
  u6 = 1;
921
921
  for (i6 = 8; i6 < 16; i6++) {
922
- u6 = u6 + (z80[i6] & 255) | 0;
923
- z80[i6] = u6 & 255;
922
+ u6 = u6 + (z81[i6] & 255) | 0;
923
+ z81[i6] = u6 & 255;
924
924
  u6 >>>= 8;
925
925
  }
926
926
  b6 -= 64;
@@ -928,30 +928,30 @@ var require_nacl_fast = __commonJS({
928
928
  mpos += 64;
929
929
  }
930
930
  if (b6 > 0) {
931
- crypto_core_salsa20(x6, z80, k6, sigma);
931
+ crypto_core_salsa20(x6, z81, k6, sigma);
932
932
  for (i6 = 0; i6 < b6; i6++) c6[cpos + i6] = m6[mpos + i6] ^ x6[i6];
933
933
  }
934
934
  return 0;
935
935
  }
936
936
  function crypto_stream_salsa20(c6, cpos, b6, n6, k6) {
937
- var z80 = new Uint8Array(16), x6 = new Uint8Array(64);
937
+ var z81 = new Uint8Array(16), x6 = new Uint8Array(64);
938
938
  var u6, i6;
939
- for (i6 = 0; i6 < 16; i6++) z80[i6] = 0;
940
- for (i6 = 0; i6 < 8; i6++) z80[i6] = n6[i6];
939
+ for (i6 = 0; i6 < 16; i6++) z81[i6] = 0;
940
+ for (i6 = 0; i6 < 8; i6++) z81[i6] = n6[i6];
941
941
  while (b6 >= 64) {
942
- crypto_core_salsa20(x6, z80, k6, sigma);
942
+ crypto_core_salsa20(x6, z81, k6, sigma);
943
943
  for (i6 = 0; i6 < 64; i6++) c6[cpos + i6] = x6[i6];
944
944
  u6 = 1;
945
945
  for (i6 = 8; i6 < 16; i6++) {
946
- u6 = u6 + (z80[i6] & 255) | 0;
947
- z80[i6] = u6 & 255;
946
+ u6 = u6 + (z81[i6] & 255) | 0;
947
+ z81[i6] = u6 & 255;
948
948
  u6 >>>= 8;
949
949
  }
950
950
  b6 -= 64;
951
951
  cpos += 64;
952
952
  }
953
953
  if (b6 > 0) {
954
- crypto_core_salsa20(x6, z80, k6, sigma);
954
+ crypto_core_salsa20(x6, z81, k6, sigma);
955
955
  for (i6 = 0; i6 < b6; i6++) c6[cpos + i6] = x6[i6];
956
956
  }
957
957
  return 0;
@@ -1831,12 +1831,12 @@ var require_nacl_fast = __commonJS({
1831
1831
  for (a6 = 0; a6 < 16; a6++) o6[a6] = c6[a6];
1832
1832
  }
1833
1833
  function crypto_scalarmult(q6, n6, p6) {
1834
- var z80 = new Uint8Array(32);
1834
+ var z81 = new Uint8Array(32);
1835
1835
  var x6 = new Float64Array(80), r6, i6;
1836
1836
  var a6 = gf(), b6 = gf(), c6 = gf(), d6 = gf(), e6 = gf(), f6 = gf();
1837
- for (i6 = 0; i6 < 31; i6++) z80[i6] = n6[i6];
1838
- z80[31] = n6[31] & 127 | 64;
1839
- z80[0] &= 248;
1837
+ for (i6 = 0; i6 < 31; i6++) z81[i6] = n6[i6];
1838
+ z81[31] = n6[31] & 127 | 64;
1839
+ z81[0] &= 248;
1840
1840
  unpack25519(x6, p6);
1841
1841
  for (i6 = 0; i6 < 16; i6++) {
1842
1842
  b6[i6] = x6[i6];
@@ -1844,7 +1844,7 @@ var require_nacl_fast = __commonJS({
1844
1844
  }
1845
1845
  a6[0] = d6[0] = 1;
1846
1846
  for (i6 = 254; i6 >= 0; --i6) {
1847
- r6 = z80[i6 >>> 3] >>> (i6 & 7) & 1;
1847
+ r6 = z81[i6 >>> 3] >>> (i6 & 7) & 1;
1848
1848
  sel25519(a6, b6, r6);
1849
1849
  sel25519(c6, d6, r6);
1850
1850
  A2(e6, a6, c6);
@@ -4861,8 +4861,8 @@ var require_poly1305 = __commonJS({
4861
4861
  });
4862
4862
  var u6 = {}, w6;
4863
4863
  for (w6 in b6) b6.hasOwnProperty(w6) && (u6[w6] = b6[w6]);
4864
- 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;
4865
- if (z80) B2 = y3 ? __require("path").dirname(B2) + "/" : __dirname + "/", C2 = function(a6, c6) {
4864
+ 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;
4865
+ if (z81) B2 = y3 ? __require("path").dirname(B2) + "/" : __dirname + "/", C2 = function(a6, c6) {
4866
4866
  var d6 = H2(a6);
4867
4867
  if (d6) return c6 ? d6 : d6.toString();
4868
4868
  F2 || (F2 = __require("fs"));
@@ -5118,7 +5118,7 @@ var require_poly1305 = __commonJS({
5118
5118
  function H2(a6) {
5119
5119
  if (a6.startsWith(V)) {
5120
5120
  a6 = a6.slice(V.length);
5121
- if ("boolean" === typeof z80 && z80) {
5121
+ if ("boolean" === typeof z81 && z81) {
5122
5122
  var c6 = Buffer.from(a6, "base64");
5123
5123
  c6 = new Uint8Array(c6.buffer, c6.byteOffset, c6.byteLength);
5124
5124
  } else try {
@@ -39041,14 +39041,14 @@ var init_NormalizedSchema = __esm({
39041
39041
  throw new Error("@smithy/core/schema - cannot iterate non-struct schema.");
39042
39042
  }
39043
39043
  const struct = this.getSchema();
39044
- const z80 = struct[4].length;
39044
+ const z81 = struct[4].length;
39045
39045
  let it = struct[anno.it];
39046
- if (it && z80 === it.length) {
39046
+ if (it && z81 === it.length) {
39047
39047
  yield* it;
39048
39048
  return;
39049
39049
  }
39050
- it = Array(z80);
39051
- for (let i6 = 0; i6 < z80; ++i6) {
39050
+ it = Array(z81);
39051
+ for (let i6 = 0; i6 < z81; ++i6) {
39052
39052
  const k6 = struct[4][i6];
39053
39053
  const v7 = member([struct[5][i6], 0], k6);
39054
39054
  yield it[i6] = [k6, v7];
@@ -39724,12 +39724,12 @@ var init_split_header = __esm({
39724
39724
  "../../node_modules/@smithy/core/dist-es/submodules/serde/split-header.js"() {
39725
39725
  "use strict";
39726
39726
  splitHeader = (value) => {
39727
- const z80 = value.length;
39727
+ const z81 = value.length;
39728
39728
  const values = [];
39729
39729
  let withinQuotes = false;
39730
39730
  let prevChar = void 0;
39731
39731
  let anchor = 0;
39732
- for (let i6 = 0; i6 < z80; ++i6) {
39732
+ for (let i6 = 0; i6 < z81; ++i6) {
39733
39733
  const char = value[i6];
39734
39734
  switch (char) {
39735
39735
  case `"`:
@@ -39750,12 +39750,12 @@ var init_split_header = __esm({
39750
39750
  values.push(value.slice(anchor));
39751
39751
  return values.map((v7) => {
39752
39752
  v7 = v7.trim();
39753
- const z81 = v7.length;
39754
- if (z81 < 2) {
39753
+ const z82 = v7.length;
39754
+ if (z82 < 2) {
39755
39755
  return v7;
39756
39756
  }
39757
- if (v7[0] === `"` && v7[z81 - 1] === `"`) {
39758
- v7 = v7.slice(1, z81 - 1);
39757
+ if (v7[0] === `"` && v7[z82 - 1] === `"`) {
39758
+ v7 = v7.slice(1, z82 - 1);
39759
39759
  }
39760
39760
  return v7.replace(/\\"/g, '"');
39761
39761
  });
@@ -41153,11 +41153,11 @@ var init_EndpointCache = __esm({
41153
41153
  }
41154
41154
  hash(endpointParams) {
41155
41155
  let buffer = "";
41156
- const { parameters: parameters64 } = this;
41157
- if (parameters64.length === 0) {
41156
+ const { parameters: parameters65 } = this;
41157
+ if (parameters65.length === 0) {
41158
41158
  return false;
41159
41159
  }
41160
- for (const param of parameters64) {
41160
+ for (const param of parameters65) {
41161
41161
  const val = String(endpointParams[param] ?? "");
41162
41162
  if (val.includes("|;")) {
41163
41163
  return false;
@@ -41874,15 +41874,15 @@ var init_resolveEndpoint = __esm({
41874
41874
  init_utils();
41875
41875
  resolveEndpoint = (ruleSetObject, options) => {
41876
41876
  const { endpointParams, logger: logger2 } = options;
41877
- const { parameters: parameters64, rules } = ruleSetObject;
41877
+ const { parameters: parameters65, rules } = ruleSetObject;
41878
41878
  options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
41879
- const paramsWithDefault = Object.entries(parameters64).filter(([, v7]) => v7.default != null).map(([k6, v7]) => [k6, v7.default]);
41879
+ const paramsWithDefault = Object.entries(parameters65).filter(([, v7]) => v7.default != null).map(([k6, v7]) => [k6, v7.default]);
41880
41880
  if (paramsWithDefault.length > 0) {
41881
41881
  for (const [paramKey, paramDefaultValue] of paramsWithDefault) {
41882
41882
  endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;
41883
41883
  }
41884
41884
  }
41885
- const requiredParams = Object.entries(parameters64).filter(([, v7]) => v7.required).map(([k6]) => k6);
41885
+ const requiredParams = Object.entries(parameters65).filter(([, v7]) => v7.required).map(([k6]) => k6);
41886
41886
  for (const requiredParam of requiredParams) {
41887
41887
  if (endpointParams[requiredParam] == null) {
41888
41888
  throw new EndpointError(`Missing required parameter: '${requiredParam}'`);
@@ -47492,8 +47492,8 @@ var init_ProtocolLib = __esm({
47492
47492
  constructor(queryCompat = false) {
47493
47493
  this.queryCompat = queryCompat;
47494
47494
  }
47495
- resolveRestContentType(defaultContentType, inputSchema77) {
47496
- const members = inputSchema77.getMemberSchemas();
47495
+ resolveRestContentType(defaultContentType, inputSchema78) {
47496
+ const members = inputSchema78.getMemberSchemas();
47497
47497
  const httpPayloadMember = Object.values(members).find((m6) => {
47498
47498
  return !!m6.getMergedTraits().httpPayload;
47499
47499
  });
@@ -47508,7 +47508,7 @@ var init_ProtocolLib = __esm({
47508
47508
  } else {
47509
47509
  return defaultContentType;
47510
47510
  }
47511
- } else if (!inputSchema77.isUnitSchema()) {
47511
+ } else if (!inputSchema78.isUnitSchema()) {
47512
47512
  const hasBody = Object.values(members).find((m6) => {
47513
47513
  const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m6.getMergedTraits();
47514
47514
  const noPrefixHeaders = httpPrefixHeaders === void 0;
@@ -48351,9 +48351,9 @@ var init_AwsRestJsonProtocol = __esm({
48351
48351
  }
48352
48352
  async serializeRequest(operationSchema, input, context) {
48353
48353
  const request2 = await super.serializeRequest(operationSchema, input, context);
48354
- const inputSchema77 = NormalizedSchema.of(operationSchema.input);
48354
+ const inputSchema78 = NormalizedSchema.of(operationSchema.input);
48355
48355
  if (!request2.headers["content-type"]) {
48356
- const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema77);
48356
+ const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema78);
48357
48357
  if (contentType) {
48358
48358
  request2.headers["content-type"] = contentType;
48359
48359
  }
@@ -48365,8 +48365,8 @@ var init_AwsRestJsonProtocol = __esm({
48365
48365
  }
48366
48366
  async deserializeResponse(operationSchema, context, response) {
48367
48367
  const output = await super.deserializeResponse(operationSchema, context, response);
48368
- const outputSchema77 = NormalizedSchema.of(operationSchema.output);
48369
- for (const [name, member2] of outputSchema77.structIterator()) {
48368
+ const outputSchema78 = NormalizedSchema.of(operationSchema.output);
48369
+ for (const [name, member2] of outputSchema78.structIterator()) {
48370
48370
  if (member2.getMemberTraits().httpPayload && !(name in output)) {
48371
48371
  output[name] = null;
48372
48372
  }
@@ -52230,22 +52230,22 @@ var init_loadCognitoIdentity = __esm({
52230
52230
  });
52231
52231
 
52232
52232
  // ../../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js
52233
- function fromCognitoIdentity(parameters64) {
52233
+ function fromCognitoIdentity(parameters65) {
52234
52234
  return async (awsIdentityProperties) => {
52235
- parameters64.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity");
52235
+ parameters65.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity");
52236
52236
  const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));
52237
- const fromConfigs = (property) => parameters64.clientConfig?.[property] ?? parameters64.parentClientConfig?.[property] ?? awsIdentityProperties?.callerClientConfig?.[property];
52238
- const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters64.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters64.logger), SessionToken } = throwOnMissingCredentials(parameters64.logger) } = await (parameters64.client ?? new CognitoIdentityClient2(Object.assign({}, parameters64.clientConfig ?? {}, {
52237
+ const fromConfigs = (property) => parameters65.clientConfig?.[property] ?? parameters65.parentClientConfig?.[property] ?? awsIdentityProperties?.callerClientConfig?.[property];
52238
+ const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters65.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters65.logger), SessionToken } = throwOnMissingCredentials(parameters65.logger) } = await (parameters65.client ?? new CognitoIdentityClient2(Object.assign({}, parameters65.clientConfig ?? {}, {
52239
52239
  region: fromConfigs("region"),
52240
52240
  profile: fromConfigs("profile"),
52241
52241
  userAgentAppId: fromConfigs("userAgentAppId")
52242
52242
  }))).send(new GetCredentialsForIdentityCommand2({
52243
- CustomRoleArn: parameters64.customRoleArn,
52244
- IdentityId: parameters64.identityId,
52245
- Logins: parameters64.logins ? await resolveLogins(parameters64.logins) : void 0
52243
+ CustomRoleArn: parameters65.customRoleArn,
52244
+ IdentityId: parameters65.identityId,
52245
+ Logins: parameters65.logins ? await resolveLogins(parameters65.logins) : void 0
52246
52246
  }));
52247
52247
  return {
52248
- identityId: parameters64.identityId,
52248
+ identityId: parameters65.identityId,
52249
52249
  accessKeyId: AccessKeyId,
52250
52250
  secretAccessKey: SecretKey,
52251
52251
  sessionToken: SessionToken,
@@ -64806,11 +64806,11 @@ var require_bignumber = __commonJS({
64806
64806
  return n6 > 0 || n6 === i6 ? i6 : i6 - 1;
64807
64807
  }
64808
64808
  function coeffToString(a6) {
64809
- var s6, z80, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
64809
+ var s6, z81, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
64810
64810
  for (; i6 < j6; ) {
64811
64811
  s6 = a6[i6++] + "";
64812
- z80 = LOG_BASE - s6.length;
64813
- for (; z80--; s6 = "0" + s6) ;
64812
+ z81 = LOG_BASE - s6.length;
64813
+ for (; z81--; s6 = "0" + s6) ;
64814
64814
  r6 += s6;
64815
64815
  }
64816
64816
  for (j6 = r6.length; r6.charCodeAt(--j6) === 48; ) ;
@@ -64843,15 +64843,15 @@ var require_bignumber = __commonJS({
64843
64843
  function toExponential(str, e6) {
64844
64844
  return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e6 < 0 ? "e" : "e+") + e6;
64845
64845
  }
64846
- function toFixedPoint(str, e6, z80) {
64846
+ function toFixedPoint(str, e6, z81) {
64847
64847
  var len, zs;
64848
64848
  if (e6 < 0) {
64849
- for (zs = z80 + "."; ++e6; zs += z80) ;
64849
+ for (zs = z81 + "."; ++e6; zs += z81) ;
64850
64850
  str = zs + str;
64851
64851
  } else {
64852
64852
  len = str.length;
64853
64853
  if (++e6 > len) {
64854
- for (zs = z80, e6 -= len; --e6; zs += z80) ;
64854
+ for (zs = z81, e6 -= len; --e6; zs += z81) ;
64855
64855
  str += zs;
64856
64856
  } else if (e6 < len) {
64857
64857
  str = str.slice(0, e6) + "." + str.slice(e6);
@@ -86533,6 +86533,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
86533
86533
  releaseFlag;
86534
86534
  proxyPolicy;
86535
86535
  experimentalAttributes;
86536
+ categories;
86536
86537
  onboarding;
86537
86538
  systemPrompt;
86538
86539
  tools;
@@ -86548,6 +86549,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
86548
86549
  this.releaseFlag = config.releaseFlag;
86549
86550
  this.proxyPolicy = config.proxyPolicy;
86550
86551
  this.experimentalAttributes = config.experimentalAttributes;
86552
+ this.categories = config.categories ?? [];
86551
86553
  this.onboarding = config.onboarding;
86552
86554
  this.systemPrompt = config.systemPrompt;
86553
86555
  this.tools = config.tools;
@@ -86912,6 +86914,7 @@ var snowflakeConnector = new ConnectorPlugin({
86912
86914
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oyVtAcP3pMlXaOrts9unk/b7a9dc25d15c388b66e983041b855447/snowflake.svg",
86913
86915
  parameters,
86914
86916
  releaseFlag: { dev1: true, dev2: true, prod: true },
86917
+ categories: ["database"],
86915
86918
  onboarding: snowflakeOnboarding,
86916
86919
  systemPrompt: {
86917
86920
  en: `### Tools
@@ -87195,6 +87198,7 @@ var snowflakePatConnector = new ConnectorPlugin({
87195
87198
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oyVtAcP3pMlXaOrts9unk/b7a9dc25d15c388b66e983041b855447/snowflake.svg",
87196
87199
  parameters: parameters2,
87197
87200
  releaseFlag: { dev1: true, dev2: true, prod: true },
87201
+ categories: ["database"],
87198
87202
  onboarding: snowflakeOnboarding,
87199
87203
  systemPrompt: {
87200
87204
  en: `### Tools
@@ -87558,6 +87562,7 @@ var postgresqlConnector = new ConnectorPlugin({
87558
87562
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/42AHi2uqteUn65MyqdN6V7/a0f68f12af6aac96bbcda5980f43de07/elephant.png",
87559
87563
  parameters: parameters3,
87560
87564
  releaseFlag: { dev1: true, dev2: true, prod: true },
87565
+ categories: ["database"],
87561
87566
  onboarding: postgresqlOnboarding,
87562
87567
  systemPrompt: {
87563
87568
  en: `### Tools
@@ -87757,6 +87762,7 @@ var mysqlConnector = new ConnectorPlugin({
87757
87762
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6ghPFeGgl7uBs5NHH1a4L/512c9433beec5b595caa41f04921c1f9/logo-mysql-170x115.png",
87758
87763
  parameters: parameters4,
87759
87764
  releaseFlag: { dev1: true, dev2: true, prod: true },
87765
+ categories: ["database"],
87760
87766
  onboarding: mysqlOnboarding,
87761
87767
  systemPrompt: {
87762
87768
  en: `### Tools
@@ -88131,6 +88137,7 @@ var bigqueryConnector = new ConnectorPlugin({
88131
88137
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6nlehQyOmdbktG5hOYkYMr/6ca559140d5ddc7dadc5eac88858a563/bigquery.svg",
88132
88138
  parameters: parameters5,
88133
88139
  releaseFlag: { dev1: true, dev2: true, prod: true },
88140
+ categories: ["database"],
88134
88141
  onboarding: bigqueryOnboarding,
88135
88142
  systemPrompt: {
88136
88143
  en: `### Tools
@@ -88661,6 +88668,7 @@ var bigqueryOauthConnector = new ConnectorPlugin({
88661
88668
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6nlehQyOmdbktG5hOYkYMr/6ca559140d5ddc7dadc5eac88858a563/bigquery.svg",
88662
88669
  parameters: parameters6,
88663
88670
  releaseFlag: { dev1: true, dev2: true, prod: true },
88671
+ categories: ["database"],
88664
88672
  onboarding: bigqueryOnboarding2,
88665
88673
  proxyPolicy: {
88666
88674
  allowlist: [
@@ -88931,6 +88939,7 @@ var awsAthenaConnector = new ConnectorPlugin({
88931
88939
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5x0vIHtUHfJJMZUv4RFOYZ/5059bac389f0169542f39cdb4b387d2c/Athena.svg",
88932
88940
  parameters: parameters7,
88933
88941
  releaseFlag: { dev1: true, dev2: true, prod: true },
88942
+ categories: ["database"],
88934
88943
  onboarding: awsAthenaOnboarding,
88935
88944
  systemPrompt: {
88936
88945
  en: `### Tools
@@ -89303,6 +89312,7 @@ var redshiftConnector = new ConnectorPlugin({
89303
89312
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/AEwW2psmrnZ7htTVsgA9t/a637e31707c5d760be73ce1d8ec75580/aws-redshift-logo.svg",
89304
89313
  parameters: parameters8,
89305
89314
  releaseFlag: { dev1: true, dev2: true, prod: true },
89315
+ categories: ["database"],
89306
89316
  onboarding: redshiftOnboarding,
89307
89317
  systemPrompt: {
89308
89318
  en: `### Tools
@@ -89589,6 +89599,7 @@ var databricksConnector = new ConnectorPlugin({
89589
89599
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6QgcrfpQOKg18P7DdgKerd/af55bf0d871339049824dd167b97a29f/databricks-icon.svg",
89590
89600
  parameters: parameters9,
89591
89601
  releaseFlag: { dev1: true, dev2: true, prod: true },
89602
+ categories: ["database"],
89592
89603
  onboarding: databricksOnboarding,
89593
89604
  systemPrompt: {
89594
89605
  en: `### Tools
@@ -89795,6 +89806,7 @@ var airtableConnector = new ConnectorPlugin({
89795
89806
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19JUphfOZjyjTK6Zg4NGCf/8c56227b088cada52d3a2d9385a3be97/airtable.svg",
89796
89807
  parameters: parameters10,
89797
89808
  releaseFlag: { dev1: true, dev2: true, prod: true },
89809
+ categories: ["productivity"],
89798
89810
  onboarding: airtableOnboarding,
89799
89811
  systemPrompt: {
89800
89812
  en: `### Tools
@@ -90276,6 +90288,7 @@ var googleAdsConnector = new ConnectorPlugin({
90276
90288
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1NGvmgvCxX7Tn11EST2N3N/a745fe7c63d360ed40a27ddaad3af168/google-ads.svg",
90277
90289
  parameters: parameters11,
90278
90290
  releaseFlag: { dev1: true, dev2: false, prod: false },
90291
+ categories: ["marketing"],
90279
90292
  onboarding: googleAdsOnboarding,
90280
90293
  proxyPolicy: {
90281
90294
  allowlist: [
@@ -90581,6 +90594,7 @@ var googleAnalyticsConnector = new ConnectorPlugin({
90581
90594
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7fs0ipzxuD9mACDzBATtxX/3c53ed90d15c96483e4f78cb29dab5e9/google-analytics.svg",
90582
90595
  parameters: parameters12,
90583
90596
  releaseFlag: { dev1: true, dev2: true, prod: true },
90597
+ categories: ["marketing"],
90584
90598
  onboarding: googleAnalyticsOnboarding,
90585
90599
  systemPrompt: {
90586
90600
  en: `### Tools
@@ -91146,6 +91160,7 @@ var googleAnalyticsOauthConnector = new ConnectorPlugin({
91146
91160
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7fs0ipzxuD9mACDzBATtxX/3c53ed90d15c96483e4f78cb29dab5e9/google-analytics.svg",
91147
91161
  parameters: parameters13,
91148
91162
  releaseFlag: { dev1: true, dev2: false, prod: false },
91163
+ categories: ["marketing"],
91149
91164
  onboarding: googleAnalyticsOauthOnboarding,
91150
91165
  proxyPolicy: {
91151
91166
  allowlist: [
@@ -91374,7 +91389,8 @@ var outputSchema21 = z21.discriminatedUnion("success", [
91374
91389
  z21.object({
91375
91390
  success: z21.literal(true),
91376
91391
  status: z21.number(),
91377
- data: z21.record(z21.string(), z21.unknown())
91392
+ data: z21.record(z21.string(), z21.unknown()),
91393
+ serviceAccountEmail: z21.string()
91378
91394
  }),
91379
91395
  z21.object({
91380
91396
  success: z21.literal(false),
@@ -91455,7 +91471,12 @@ var requestTool5 = new ConnectorTool({
91455
91471
  serviceAccountEmail
91456
91472
  };
91457
91473
  }
91458
- return { success: true, status: response.status, data };
91474
+ return {
91475
+ success: true,
91476
+ status: response.status,
91477
+ data,
91478
+ serviceAccountEmail
91479
+ };
91459
91480
  } finally {
91460
91481
  clearTimeout(timeout);
91461
91482
  }
@@ -91502,7 +91523,8 @@ var outputSchema22 = z22.discriminatedUnion("success", [
91502
91523
  z22.object({
91503
91524
  success: z22.literal(true),
91504
91525
  status: z22.number(),
91505
- data: z22.record(z22.string(), z22.unknown())
91526
+ data: z22.record(z22.string(), z22.unknown()),
91527
+ serviceAccountEmail: z22.string()
91506
91528
  }),
91507
91529
  z22.object({
91508
91530
  success: z22.literal(false),
@@ -91584,7 +91606,12 @@ var requestWithDelegationTool = new ConnectorTool({
91584
91606
  serviceAccountEmail
91585
91607
  };
91586
91608
  }
91587
- return { success: true, status: response.status, data };
91609
+ return {
91610
+ success: true,
91611
+ status: response.status,
91612
+ data,
91613
+ serviceAccountEmail
91614
+ };
91588
91615
  } finally {
91589
91616
  clearTimeout(timeout);
91590
91617
  }
@@ -91606,7 +91633,18 @@ var READONLY_SCOPES = '["https://www.googleapis.com/auth/calendar.readonly"]';
91606
91633
  var SERVICE_ACCOUNT_KEY_PARAM_SLUG = parameters14.serviceAccountKeyJsonBase64.slug;
91607
91634
  var googleCalendarOnboarding = new ConnectorOnboarding({
91608
91635
  connectionSetupInstructions: {
91609
- 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
91636
+ 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
91637
+
91638
+ ## \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
91639
+
91640
+ \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
91641
+
91642
+ \`${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:
91643
+ - \`method\`: \`"GET"\`
91644
+ - \`path\`: \`"/users/me/calendarList"\`
91645
+ - \`scopes\`: \`${READONLY_SCOPES}\`
91646
+
91647
+ \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
91610
91648
 
91611
91649
  ## \u30B9\u30C6\u30C3\u30D7 1: \u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u3092\u9078\u629E
91612
91650
 
@@ -91618,52 +91656,60 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
91618
91656
  - \`{ 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" }\`
91619
91657
  - \`{ label: "\u4E21\u65B9\u3092\u7D44\u307F\u5408\u308F\u305B\u308B", value: "both" }\`
91620
91658
 
91621
- ## \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)
91659
+ ## \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)
91660
+
91661
+ \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
91662
+
91663
+ 1. \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC ID \u3092\u805E\u304F:
91664
+ - \`type\`: \`"freeText"\`
91665
+ - \`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
91666
+ - \`placeholder\`: \`"alice@example.com, c_xxx@group.calendar.google.com"\`
91622
91667
 
91623
- 1. \`${requestToolName}\` \u3092\u547C\u3093\u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
91668
+ 2. \u5165\u529B\u3055\u308C\u305F\u5404\u30AB\u30EC\u30F3\u30C0\u30FC ID \`<id>\` \u306B\u3064\u3044\u3066 \`${requestToolName}\` \u3067\u758E\u901A\u78BA\u8A8D:
91624
91669
  - \`method\`: \`"GET"\`
91625
- - \`path\`: \`"/users/me/calendarList"\`
91670
+ - \`path\`: \`"/calendars/<id>"\`
91626
91671
  - \`scopes\`: \`${READONLY_SCOPES}\`
91672
+ - \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
91673
+ - \u5931\u6557 (404 / 403 \u7B49) \u306F\u30A2\u30AF\u30BB\u30B9\u4E0D\u53EF\u3068\u3057\u3066\u8A18\u9332
91627
91674
 
91628
- 2. \u53D6\u5F97\u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
91629
- - \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
91630
- - \u7D50\u679C\u304C\u3042\u308B: \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u9078\u3070\u305B\u308B
91631
- - \`type\`: \`"multiSelect"\`
91632
- - \`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
91633
- - \`options\`: \u5404\u30AB\u30EC\u30F3\u30C0\u30FC\u306B\u3064\u3044\u3066 \`label\`: \`"<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D>"\`\u3001\`value\`: \`"<calendarId>"\`
91675
+ 3. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
91676
+ - **\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
91677
+ - **\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
91634
91678
 
91635
- ## \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)
91679
+ ## \u30B9\u30C6\u30C3\u30D7 3: \u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u7D4C\u8DEF (\`"delegation"\` \u307E\u305F\u306F \`"both"\` \u306E\u5834\u5408)
91680
+
91681
+ \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
91636
91682
 
91637
91683
  1. \`askUserQuestion\` \u3067\u5BFE\u8C61\u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u805E\u304F:
91638
91684
  - \`type\`: \`"freeText"\`
91639
- - \`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
91685
+ - \`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
91640
91686
  - \`placeholder\`: \`"alice@example.com, bob@example.com"\`
91641
91687
 
91642
- 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:
91688
+ 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:
91643
91689
  - \`method\`: \`"GET"\`
91644
91690
  - \`path\`: \`"/users/me/calendarList"\`
91645
91691
  - \`subject\`: \`<email>\`
91646
91692
  - \`scopes\`: \`${READONLY_SCOPES}\`
91647
91693
 
91648
- 3. \u53D6\u5F97\u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
91649
- - \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
91650
- - \u4E00\u90E8\u307E\u305F\u306F\u5168\u4EF6\u6210\u529F: \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u9078\u3070\u305B\u308B
91694
+ 3. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
91695
+ - **\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
91696
+ - **\u4E00\u90E8\u307E\u305F\u306F\u5168\u4EF6\u6210\u529F**: \`askUserQuestion\` \u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u7D5E\u308A\u8FBC\u307E\u305B\u308B
91651
91697
  - \`type\`: \`"multiSelect"\`
91652
91698
  - \`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
91653
- - \`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>"\`
91699
+ - \`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>"\`
91654
91700
  - \u4E00\u90E8\u5931\u6557\u304C\u3042\u308C\u3070\u3001\u305D\u306E\u65E8\u3092 1 \u6587\u3067\u77ED\u304F\u4F1D\u3048\u308B
91655
91701
 
91656
91702
  ## \u30B9\u30C6\u30C3\u30D7 4: Project Knowledge \u306B\u8A18\u9332
91657
91703
 
91658
- \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:
91704
+ \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:
91659
91705
  - \u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u7D4C\u7531: \`- calendar: <calendarId> (delegation, subject: <subject>, name: "<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D>")\`
91660
91706
  - \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u7D4C\u8DEF: \`- calendar: <calendarId> (service-account, name: "<\u30AB\u30EC\u30F3\u30C0\u30FC\u540D>")\`
91661
91707
 
91662
- ## \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
91708
+ ## \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
91663
91709
 
91664
- \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:
91710
+ \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:
91665
91711
 
91666
- - \`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
91712
+ - \`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
91667
91713
  - \`options\`: \u3053\u3053\u307E\u3067\u306B\u8A66\u3057\u305F\u7D4C\u8DEF\u306B\u5FDC\u3058\u3066\u4EE5\u4E0B\u3092\u7D44\u307F\u5408\u308F\u305B\u308B:
91668
91714
  - \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" }\`
91669
91715
  - \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" }\`
@@ -91671,17 +91717,28 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
91671
91717
  - \u5E38\u306B: \`{ label: "\u5225\u306E\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u8A2D\u5B9A\u3057\u76F4\u3059", value: "change-service-account" }\`
91672
91718
 
91673
91719
  \u9078\u629E\u7D50\u679C\u306B\u5FDC\u3058\u305F\u6319\u52D5:
91674
- - "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)
91720
+ - "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)
91675
91721
  - "restart": \u30B9\u30C6\u30C3\u30D7 1 \u304B\u3089\u518D\u5B9F\u884C
91676
91722
  - "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:
91677
91723
  - \`parameterSlug\`: \`"${SERVICE_ACCOUNT_KEY_PARAM_SLUG}"\`
91678
- - \u5B8C\u4E86\u5F8C\u3001\u30B9\u30C6\u30C3\u30D7 1 \u304B\u3089\u518D\u5B9F\u884C
91724
+ - \u5B8C\u4E86\u5F8C\u3001\u30B9\u30C6\u30C3\u30D7 0 \u304B\u3089\u518D\u5B9F\u884C
91679
91725
 
91680
91726
  ## \u5236\u7D04
91681
91727
 
91682
91728
  - \u4E0A\u8A18\u4EE5\u5916\u306E API \u547C\u3073\u51FA\u3057\u3092 setup \u4E2D\u306B\u884C\u308F\u306A\u3044
91683
91729
  - \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`,
91684
- 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.
91730
+ en: `Set up the Google Calendar connection. Ask the user how they want to access calendars and record the target calendars in Project Knowledge.
91731
+
91732
+ ## Step 0: Get the service account email
91733
+
91734
+ We need the service account email so we can show it to the user in the next steps.
91735
+
91736
+ Call \`${requestToolName}\` once and remember the \`serviceAccountEmail\` from the response:
91737
+ - \`method\`: \`"GET"\`
91738
+ - \`path\`: \`"/users/me/calendarList"\`
91739
+ - \`scopes\`: \`${READONLY_SCOPES}\`
91740
+
91741
+ \`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.
91685
91742
 
91686
91743
  ## Step 1: Choose the access method
91687
91744
 
@@ -91693,50 +91750,58 @@ Call \`askUserQuestion\`:
91693
91750
  - \`{ label: "Calendars of users in your organization (via Domain-wide Delegation)", value: "delegation" }\`
91694
91751
  - \`{ label: "Both", value: "both" }\`
91695
91752
 
91696
- ## Step 2: Discover and select via the service-account path (when \`"service-account"\` or \`"both"\`)
91753
+ ## Step 2: Service-account path (when \`"service-account"\` or \`"both"\`)
91754
+
91755
+ 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).
91756
+
91757
+ 1. Ask the user for calendar IDs:
91758
+ - \`type\`: \`"freeText"\`
91759
+ - \`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."
91760
+ - \`placeholder\`: \`"alice@example.com, c_xxx@group.calendar.google.com"\`
91697
91761
 
91698
- 1. Call \`${requestToolName}\`:
91762
+ 2. For each calendar ID \`<id>\`, verify access by calling \`${requestToolName}\`:
91699
91763
  - \`method\`: \`"GET"\`
91700
- - \`path\`: \`"/users/me/calendarList"\`
91764
+ - \`path\`: \`"/calendars/<id>"\`
91701
91765
  - \`scopes\`: \`${READONLY_SCOPES}\`
91766
+ - On success, capture \`data.summary\` as the calendar name
91767
+ - On failure (404 / 403 / etc.), record the ID as inaccessible
91702
91768
 
91703
- 2. Branch on the result:
91704
- - Empty: if the access method is \`"service-account"\` only, jump to Step 5. If \`"both"\`, continue to Step 3.
91705
- - Non-empty: ask the user to pick:
91706
- - \`type\`: \`"multiSelect"\`
91707
- - \`question\`: "Select the calendars to use (multiple allowed)"
91708
- - \`options\`: For each calendar, \`label\`: \`"<calendar name>"\`, \`value\`: \`"<calendarId>"\`
91769
+ 3. Branch on the results:
91770
+ - **All IDs failed**: if the access method is \`"service-account"\` only, jump to Step 5. If \`"both"\`, continue to Step 3.
91771
+ - **Any success**: take the verified calendars as the selection for Step 4. If some failed, mention them briefly in one sentence.
91772
+
91773
+ ## Step 3: Domain-wide Delegation path (when \`"delegation"\` or \`"both"\`)
91709
91774
 
91710
- ## Step 3: Discover and select via the Domain-wide Delegation path (when \`"delegation"\` or \`"both"\`)
91775
+ Discover calendars from each Workspace user and let the user narrow them down.
91711
91776
 
91712
- 1. Ask the user for target emails:
91777
+ 1. Ask the user for the target Workspace user emails:
91713
91778
  - \`type\`: \`"freeText"\`
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 this service account in advance ([admin setup guide](https://support.google.com/a/answer/162106))."
91779
+ - \`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))."
91715
91780
  - \`placeholder\`: \`"alice@example.com, bob@example.com"\`
91716
91781
 
91717
- 2. Extract individual emails and, for each \`<email>\`, call \`${requestWithDelegationToolName}\`:
91782
+ 2. For each email \`<email>\`, list calendars accessible to that user via \`${requestWithDelegationToolName}\`:
91718
91783
  - \`method\`: \`"GET"\`
91719
91784
  - \`path\`: \`"/users/me/calendarList"\`
91720
91785
  - \`subject\`: \`<email>\`
91721
91786
  - \`scopes\`: \`${READONLY_SCOPES}\`
91722
91787
 
91723
91788
  3. Branch on the results:
91724
- - 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.
91725
- - Any success: ask the user to pick:
91789
+ - **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.
91790
+ - **Any success**: ask the user to narrow down via \`askUserQuestion\`:
91726
91791
  - \`type\`: \`"multiSelect"\`
91727
91792
  - \`question\`: "Select the calendars to use (multiple allowed)"
91728
- - \`options\`: For each calendar, \`label\`: \`"<calendar name> (owner: <the subject used>)"\`, \`value\`: \`"<calendarId>"\`
91729
- - If some emails failed, mention that briefly in one sentence.
91793
+ - \`options\`: For each discovered calendar, \`label\`: \`"<calendar name> (owner: <the subject used>)"\`, \`value\`: \`"<calendarId>"\`
91794
+ - If some emails failed, mention them briefly in one sentence.
91730
91795
 
91731
91796
  ## Step 4: Record in Project Knowledge
91732
91797
 
91733
- 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:
91798
+ 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:
91734
91799
  - Via Domain-wide Delegation: \`- calendar: <calendarId> (delegation, subject: <subject>, name: "<calendar name>")\`
91735
91800
  - Via service account: \`- calendar: <calendarId> (service-account, name: "<calendar name>")\`
91736
91801
 
91737
91802
  ## Step 5: Escalation when zero calendars are selected
91738
91803
 
91739
- 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\`:
91804
+ When no calendars end up selected, call \`askUserQuestion\`:
91740
91805
 
91741
91806
  - \`question\`: "No accessible calendars found. Please do one of the following before continuing. Service account: \`<serviceAccountEmail>\`."
91742
91807
  - \`options\`: Combine these based on which paths were attempted:
@@ -91746,11 +91811,11 @@ If the final selected calendar set is empty (every attempted path returned nothi
91746
91811
  - Always: \`{ label: "Use a different service account", value: "change-service-account" }\`
91747
91812
 
91748
91813
  Behavior per selection:
91749
- - "retry": re-probe the path that was just attempted (leave the exact retry plan to the agent)
91814
+ - "retry": re-probe the path that was just attempted (the agent decides the exact retry plan)
91750
91815
  - "restart": re-run from Step 1
91751
91816
  - "change-service-account": call \`updateConnectionParameters\` to have the user re-upload the service account JSON:
91752
91817
  - \`parameterSlug\`: \`"${SERVICE_ACCOUNT_KEY_PARAM_SLUG}"\`
91753
- - After it completes, re-run from Step 1
91818
+ - After it completes, re-run from Step 0
91754
91819
 
91755
91820
  ## Constraints
91756
91821
 
@@ -91792,6 +91857,7 @@ var googleCalendarConnector = new ConnectorPlugin({
91792
91857
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2YsqoBEpdELmfDeFcyGHyE/4494c633b5ae15e562cb739cd85442c1/google-calendar.png",
91793
91858
  parameters: parameters14,
91794
91859
  releaseFlag: { dev1: true, dev2: true, prod: true },
91860
+ categories: ["productivity"],
91795
91861
  onboarding: googleCalendarOnboarding,
91796
91862
  systemPrompt: {
91797
91863
  en: `### Tools
@@ -92296,6 +92362,7 @@ var googleCalendarOauthConnector = new ConnectorPlugin({
92296
92362
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2YsqoBEpdELmfDeFcyGHyE/4494c633b5ae15e562cb739cd85442c1/google-calendar.png",
92297
92363
  parameters: parameters15,
92298
92364
  releaseFlag: { dev1: true, dev2: false, prod: false },
92365
+ categories: ["productivity"],
92299
92366
  onboarding: googleCalendarOauthOnboarding,
92300
92367
  proxyPolicy: {
92301
92368
  allowlist: [
@@ -92602,6 +92669,7 @@ var googleDocsConnector = new ConnectorPlugin({
92602
92669
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6vvcGJisvXjOumeTvswjzf/e9bb39e453cc0b71a20f26019b23b0d2/google_docs.png",
92603
92670
  parameters: parameters16,
92604
92671
  releaseFlag: { dev1: true, dev2: false, prod: false },
92672
+ categories: ["productivity"],
92605
92673
  onboarding: googleDocsOnboarding,
92606
92674
  proxyPolicy: {
92607
92675
  allowlist: [
@@ -92893,6 +92961,7 @@ var googleDriveConnector = new ConnectorPlugin({
92893
92961
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4GJX5yQTogUgar1buWxXbv/4b43a65353319c508111489f834d22c4/google_drive.png",
92894
92962
  parameters: parameters17,
92895
92963
  releaseFlag: { dev1: true, dev2: false, prod: false },
92964
+ categories: ["productivity"],
92896
92965
  onboarding: googleDriveOnboarding,
92897
92966
  proxyPolicy: {
92898
92967
  allowlist: [
@@ -93395,6 +93464,7 @@ var googleSheetsConnector = new ConnectorPlugin({
93395
93464
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1UPQuggyiZmbb26CuaSr2h/032770e8739b183fa00b7625f024e536/google-sheets.svg",
93396
93465
  parameters: parameters18,
93397
93466
  releaseFlag: { dev1: true, dev2: false, prod: false },
93467
+ categories: ["productivity"],
93398
93468
  onboarding: googleSheetsOnboarding,
93399
93469
  proxyPolicy: {
93400
93470
  allowlist: [
@@ -93696,6 +93766,7 @@ var googleSlidesConnector = new ConnectorPlugin({
93696
93766
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4oyF4yTRpemMA43X49masx/e1582d25e3b4c9a63ba83df2147c1968/google_slide.png",
93697
93767
  parameters: parameters19,
93698
93768
  releaseFlag: { dev1: true, dev2: false, prod: false },
93769
+ categories: ["productivity"],
93699
93770
  onboarding: googleSlidesOnboarding,
93700
93771
  proxyPolicy: {
93701
93772
  allowlist: [
@@ -94031,6 +94102,7 @@ var hubspotOauthConnector = new ConnectorPlugin({
94031
94102
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5UcSkKkzhUMA4RsM45ynuo/43b967e36915ca0fc5d277684b204320/hubspot.svg",
94032
94103
  parameters: parameters20,
94033
94104
  releaseFlag: { dev1: true, dev2: false, prod: false },
94105
+ categories: ["crm"],
94034
94106
  onboarding: hubspotOnboarding,
94035
94107
  proxyPolicy: {
94036
94108
  allowlist: [
@@ -94320,6 +94392,7 @@ var stripeOauthConnector = new ConnectorPlugin({
94320
94392
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2QNK0u2doqp41uL0POS4Ks/7a92367e2388ec77c7f4ada143606f9a/stripe.jpeg",
94321
94393
  parameters: parameters21,
94322
94394
  releaseFlag: { dev1: true, dev2: false, prod: false },
94395
+ categories: ["finance"],
94323
94396
  onboarding: stripeOnboarding,
94324
94397
  proxyPolicy: {
94325
94398
  allowlist: [
@@ -94607,6 +94680,7 @@ var stripeApiKeyConnector = new ConnectorPlugin({
94607
94680
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2QNK0u2doqp41uL0POS4Ks/7a92367e2388ec77c7f4ada143606f9a/stripe.jpeg",
94608
94681
  parameters: parameters22,
94609
94682
  releaseFlag: { dev1: true, dev2: true, prod: true },
94683
+ categories: ["finance"],
94610
94684
  onboarding: stripeApiKeyOnboarding,
94611
94685
  systemPrompt: {
94612
94686
  en: `### Tools
@@ -94929,6 +95003,7 @@ var airtableOauthConnector = new ConnectorPlugin({
94929
95003
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19JUphfOZjyjTK6Zg4NGCf/8c56227b088cada52d3a2d9385a3be97/airtable.svg",
94930
95004
  parameters: parameters23,
94931
95005
  releaseFlag: { dev1: true, dev2: false, prod: false },
95006
+ categories: ["productivity"],
94932
95007
  onboarding: airtableOauthOnboarding,
94933
95008
  proxyPolicy: {
94934
95009
  allowlist: [
@@ -95190,6 +95265,7 @@ var kintoneConnector = new ConnectorPlugin({
95190
95265
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/76nPGMJFZkMFE3UQNo2JFy/e71dc5f5d5cec1306ce0e17aafbfd9f0/kintone.png",
95191
95266
  parameters: parameters24,
95192
95267
  releaseFlag: { dev1: true, dev2: true, prod: true },
95268
+ categories: ["productivity"],
95193
95269
  onboarding: kintoneOnboarding,
95194
95270
  systemPrompt: {
95195
95271
  en: `### Tools
@@ -95490,6 +95566,7 @@ var kintoneApiTokenConnector = new ConnectorPlugin({
95490
95566
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/76nPGMJFZkMFE3UQNo2JFy/e71dc5f5d5cec1306ce0e17aafbfd9f0/kintone.png",
95491
95567
  parameters: parameters25,
95492
95568
  releaseFlag: { dev1: true, dev2: true, prod: true },
95569
+ categories: ["productivity"],
95493
95570
  onboarding: kintoneApiTokenOnboarding,
95494
95571
  systemPrompt: {
95495
95572
  en: `### Tools
@@ -95765,6 +95842,7 @@ var wixStoreConnector = new ConnectorPlugin({
95765
95842
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/YyFxclQFzROIYpFam6vRK/e7e75d3feac49a1cc5e433c147216d23/Wix_logo_black.svg",
95766
95843
  parameters: parameters26,
95767
95844
  releaseFlag: { dev1: true, dev2: true, prod: true },
95845
+ categories: ["ecommerce"],
95768
95846
  onboarding: wixStoreOnboarding,
95769
95847
  systemPrompt: {
95770
95848
  en: `### Tools
@@ -96066,6 +96144,7 @@ var dbtConnector = new ConnectorPlugin({
96066
96144
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4iT6ncXtdtHdkXexU0WgfZ/0367a38d245f2568eab5eb511f9ee692/dbt.png",
96067
96145
  parameters: parameters27,
96068
96146
  releaseFlag: { dev1: true, dev2: true, prod: true },
96147
+ categories: ["database"],
96069
96148
  onboarding: dbtOnboarding,
96070
96149
  systemPrompt: {
96071
96150
  en: `### Tools
@@ -96400,6 +96479,7 @@ var squadbaseDbConnector = new ConnectorPlugin({
96400
96479
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/25y0XqMxIufeD3egWH3bEl/659b4ade405890654cfaf91c03a4b458/icon.svg",
96401
96480
  parameters: parameters28,
96402
96481
  releaseFlag: { dev1: true, dev2: true, prod: true },
96482
+ categories: ["database"],
96403
96483
  onboarding: squadbaseDbOnboarding,
96404
96484
  systemPrompt: {
96405
96485
  en: `### Tools
@@ -96490,6 +96570,7 @@ var openaiConnector = new ConnectorPlugin({
96490
96570
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/53XJtCgUlW10x6i1X8xpxM/0bfd634069f1d74241296543cb20427a/openai.svg",
96491
96571
  parameters: parameters29,
96492
96572
  releaseFlag: { dev1: true, dev2: true, prod: true },
96573
+ categories: ["ai"],
96493
96574
  systemPrompt: {
96494
96575
  en: `### Business Logic
96495
96576
 
@@ -96564,6 +96645,7 @@ var geminiConnector = new ConnectorPlugin({
96564
96645
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6K2qZQZEQq90YENfrXy5my/c83c0c3815af0a97d29ee70f37215f01/gemini.png",
96565
96646
  parameters: parameters30,
96566
96647
  releaseFlag: { dev1: true, dev2: true, prod: true },
96648
+ categories: ["ai"],
96567
96649
  systemPrompt: {
96568
96650
  en: `### Business Logic
96569
96651
 
@@ -96632,6 +96714,7 @@ var anthropicConnector = new ConnectorPlugin({
96632
96714
  iconUrl: "https://www.anthropic.com/images/icons/safari-pinned-tab.svg",
96633
96715
  parameters: parameters31,
96634
96716
  releaseFlag: { dev1: true, dev2: true, prod: true },
96717
+ categories: ["ai"],
96635
96718
  systemPrompt: {
96636
96719
  en: `### Business Logic
96637
96720
 
@@ -96828,6 +96911,7 @@ var amplitudeConnector = new ConnectorPlugin({
96828
96911
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2UBJSdRlFJaLq52WUCTBEB/308b59b374cf6c662ac70989860bffd7/amplitude-icon.svg",
96829
96912
  parameters: parameters32,
96830
96913
  releaseFlag: { dev1: true, dev2: true, prod: true },
96914
+ categories: ["marketing"],
96831
96915
  onboarding: amplitudeOnboarding,
96832
96916
  systemPrompt: {
96833
96917
  en: `### Tools
@@ -97081,6 +97165,7 @@ var attioConnector = new ConnectorPlugin({
97081
97165
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2qqx99vvXJojUM3tSrSWPX/1e7c35e13da6b365b8b475c1effe568f/attio.svg",
97082
97166
  parameters: parameters33,
97083
97167
  releaseFlag: { dev1: true, dev2: true, prod: true },
97168
+ categories: ["crm"],
97084
97169
  onboarding: attioOnboarding,
97085
97170
  systemPrompt: {
97086
97171
  en: `### Tools
@@ -97539,6 +97624,7 @@ var shopifyConnector = new ConnectorPlugin({
97539
97624
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/57KEjZCBskKgSxgKyU4Sm0/117d681a410f48dc36f97cdd9c0593c5/shopify-icon.svg",
97540
97625
  parameters: parameters34,
97541
97626
  releaseFlag: { dev1: true, dev2: false, prod: false },
97627
+ categories: ["ecommerce"],
97542
97628
  onboarding: shopifyOnboarding,
97543
97629
  systemPrompt: {
97544
97630
  en: `### Tools
@@ -97851,6 +97937,7 @@ var shopifyOauthConnector = new ConnectorPlugin({
97851
97937
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/57KEjZCBskKgSxgKyU4Sm0/117d681a410f48dc36f97cdd9c0593c5/shopify-icon.svg",
97852
97938
  parameters: parameters35,
97853
97939
  releaseFlag: { dev1: true, dev2: false, prod: false },
97940
+ categories: ["ecommerce"],
97854
97941
  onboarding: shopifyOauthOnboarding,
97855
97942
  proxyPolicy: {
97856
97943
  allowlist: [
@@ -98093,6 +98180,7 @@ var hubspotConnector = new ConnectorPlugin({
98093
98180
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5UcSkKkzhUMA4RsM45ynuo/43b967e36915ca0fc5d277684b204320/hubspot.svg",
98094
98181
  parameters: parameters36,
98095
98182
  releaseFlag: { dev1: true, dev2: true, prod: true },
98183
+ categories: ["crm"],
98096
98184
  onboarding: hubspotOnboarding2,
98097
98185
  systemPrompt: {
98098
98186
  en: `### Tools
@@ -98361,6 +98449,7 @@ var jiraConnector = new ConnectorPlugin({
98361
98449
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5zt4yjb36szSPPkCECYlPL/bc3e7223dc84fb16a1cce53a80f5afcc/jira.png",
98362
98450
  parameters: parameters37,
98363
98451
  releaseFlag: { dev1: true, dev2: true, prod: true },
98452
+ categories: ["productivity"],
98364
98453
  onboarding: jiraOnboarding,
98365
98454
  systemPrompt: {
98366
98455
  en: `### Tools
@@ -98636,6 +98725,7 @@ var linearConnector = new ConnectorPlugin({
98636
98725
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oR77h6TeniXGdmnp2P2LX/a2ac8630ae52d164363adb0c695d9f0b/linear.webp",
98637
98726
  parameters: parameters38,
98638
98727
  releaseFlag: { dev1: true, dev2: true, prod: true },
98728
+ categories: ["productivity"],
98639
98729
  onboarding: linearOnboarding,
98640
98730
  systemPrompt: {
98641
98731
  en: `### Tools
@@ -98898,6 +98988,7 @@ var asanaConnector = new ConnectorPlugin({
98898
98988
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3eIdaoqzIIZs2Md0OoDJMf/2fa66e0841adb985da4d3120466f3ec4/asana-icon.png",
98899
98989
  parameters: parameters39,
98900
98990
  releaseFlag: { dev1: true, dev2: true, prod: true },
98991
+ categories: ["productivity"],
98901
98992
  onboarding: asanaOnboarding,
98902
98993
  systemPrompt: {
98903
98994
  en: `### Tools
@@ -99223,6 +99314,7 @@ var clickhouseConnector = new ConnectorPlugin({
99223
99314
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/MencimqP92UmucqstLl51/d9f2b6160206f5454b26e223a763ab8f/clickhouse.png",
99224
99315
  parameters: parameters40,
99225
99316
  releaseFlag: { dev1: true, dev2: true, prod: true },
99317
+ categories: ["database"],
99226
99318
  onboarding: clickhouseOnboarding,
99227
99319
  systemPrompt: {
99228
99320
  en: `### Tools
@@ -99631,6 +99723,7 @@ var mongodbConnector = new ConnectorPlugin({
99631
99723
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/48JSUx9HE6oSa9JrHGg2E1/12b4cac65924cac3641d4bafcef37dbe/mongodb-icon.webp",
99632
99724
  parameters: parameters41,
99633
99725
  releaseFlag: { dev1: true, dev2: true, prod: true },
99726
+ categories: ["database"],
99634
99727
  onboarding: mongodbOnboarding,
99635
99728
  systemPrompt: {
99636
99729
  en: `### Tools
@@ -99815,6 +99908,7 @@ var notionConnector = new ConnectorPlugin({
99815
99908
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
99816
99909
  parameters: parameters42,
99817
99910
  releaseFlag: { dev1: true, dev2: true, prod: true },
99911
+ categories: ["productivity"],
99818
99912
  onboarding: notionOnboarding,
99819
99913
  systemPrompt: {
99820
99914
  en: `### Tools
@@ -100125,6 +100219,7 @@ var notionOauthConnector = new ConnectorPlugin({
100125
100219
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
100126
100220
  parameters: parameters43,
100127
100221
  releaseFlag: { dev1: true, dev2: true, prod: true },
100222
+ categories: ["productivity"],
100128
100223
  onboarding: notionOauthOnboarding,
100129
100224
  proxyPolicy: {
100130
100225
  allowlist: [
@@ -100491,6 +100586,7 @@ var metaAdsConnector = new ConnectorPlugin({
100491
100586
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2vyrgcvdf3jETIFXHtbteO/de7f3288e831c9f738e44cf1f961c3bd/meta-icon.webp",
100492
100587
  parameters: parameters44,
100493
100588
  releaseFlag: { dev1: true, dev2: false, prod: false },
100589
+ categories: ["marketing"],
100494
100590
  onboarding: metaAdsOnboarding,
100495
100591
  systemPrompt: {
100496
100592
  en: `### Tools
@@ -100943,6 +101039,7 @@ var metaAdsOauthConnector = new ConnectorPlugin({
100943
101039
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2vyrgcvdf3jETIFXHtbteO/de7f3288e831c9f738e44cf1f961c3bd/meta-icon.webp",
100944
101040
  parameters: parameters45,
100945
101041
  releaseFlag: { dev1: true, dev2: false, prod: false },
101042
+ categories: ["marketing"],
100946
101043
  onboarding: metaAdsOauthOnboarding,
100947
101044
  proxyPolicy: {
100948
101045
  allowlist: [
@@ -101411,6 +101508,7 @@ var tiktokAdsConnector = new ConnectorPlugin({
101411
101508
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/01jHuwvmhe4ts0wj23Hxpm/afac9fa50ac5b353927900a122e898ab/tiktok.webp",
101412
101509
  parameters: parameters46,
101413
101510
  releaseFlag: { dev1: true, dev2: false, prod: false },
101511
+ categories: ["marketing"],
101414
101512
  onboarding: tiktokAdsOnboarding,
101415
101513
  proxyPolicy: {
101416
101514
  allowlist: [
@@ -101714,6 +101812,7 @@ var mailchimpConnector = new ConnectorPlugin({
101714
101812
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19Rac6B8eGiLpQb4lKMbG3/10f567f85572aeb16f2ee6aaa6602987/mailchimp.png",
101715
101813
  parameters: parameters47,
101716
101814
  releaseFlag: { dev1: true, dev2: true, prod: true },
101815
+ categories: ["marketing"],
101717
101816
  onboarding: mailchimpOnboarding,
101718
101817
  systemPrompt: {
101719
101818
  en: `### Tools
@@ -102067,6 +102166,7 @@ var mailchimpOauthConnector = new ConnectorPlugin({
102067
102166
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19Rac6B8eGiLpQb4lKMbG3/10f567f85572aeb16f2ee6aaa6602987/mailchimp.png",
102068
102167
  parameters: parameters48,
102069
102168
  releaseFlag: { dev1: true, dev2: false, prod: false },
102169
+ categories: ["marketing"],
102070
102170
  onboarding: mailchimpOauthOnboarding,
102071
102171
  proxyPolicy: {
102072
102172
  allowlist: [
@@ -102360,6 +102460,7 @@ var customerioConnector = new ConnectorPlugin({
102360
102460
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/nngohabT7oHDIgQYAVBpz/6f6c7662ef4692eb9869e3e69dd57114/customerio.png",
102361
102461
  parameters: parameters49,
102362
102462
  releaseFlag: { dev1: true, dev2: true, prod: true },
102463
+ categories: ["marketing"],
102363
102464
  onboarding: customerioOnboarding,
102364
102465
  systemPrompt: {
102365
102466
  en: `### Tools
@@ -102581,7 +102682,8 @@ var outputSchema61 = z63.discriminatedUnion("success", [
102581
102682
  z63.object({
102582
102683
  success: z63.literal(true),
102583
102684
  status: z63.number(),
102584
- data: z63.record(z63.string(), z63.unknown())
102685
+ data: z63.record(z63.string(), z63.unknown()),
102686
+ serviceAccountEmail: z63.string()
102585
102687
  }),
102586
102688
  z63.object({
102587
102689
  success: z63.literal(false),
@@ -102663,7 +102765,12 @@ var requestWithDelegationTool2 = new ConnectorTool({
102663
102765
  serviceAccountEmail
102664
102766
  };
102665
102767
  }
102666
- return { success: true, status: response.status, data };
102768
+ return {
102769
+ success: true,
102770
+ status: response.status,
102771
+ data,
102772
+ serviceAccountEmail
102773
+ };
102667
102774
  } finally {
102668
102775
  clearTimeout(timeout);
102669
102776
  }
@@ -102758,6 +102865,7 @@ var gmailConnector = new ConnectorPlugin({
102758
102865
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4V3rfaSc1ksFIt2eHBNIwJ/7f3be41a154a6d96dcf229ed0e5858c9/Gmail_icon__2020_.svg.png",
102759
102866
  parameters: parameters50,
102760
102867
  releaseFlag: { dev1: true, dev2: true, prod: true },
102868
+ categories: ["productivity"],
102761
102869
  onboarding: gmailOnboarding,
102762
102870
  systemPrompt: {
102763
102871
  en: `### Tools
@@ -103120,6 +103228,7 @@ var gmailOauthConnector = new ConnectorPlugin({
103120
103228
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4V3rfaSc1ksFIt2eHBNIwJ/7f3be41a154a6d96dcf229ed0e5858c9/Gmail_icon__2020_.svg.png",
103121
103229
  parameters: parameters51,
103122
103230
  releaseFlag: { dev1: true, dev2: false, prod: false },
103231
+ categories: ["productivity"],
103123
103232
  onboarding: gmailOnboarding2,
103124
103233
  proxyPolicy: {
103125
103234
  allowlist: [
@@ -103320,11 +103429,424 @@ thread.messages.forEach(m => console.log(m.snippet));
103320
103429
  }
103321
103430
  });
103322
103431
 
103323
- // ../connectors/src/connectors/linkedin-ads/tools/list-ad-accounts.ts
103432
+ // ../connectors/src/connectors/google-audit-log/tools/request-with-delegation.ts
103324
103433
  import { z as z65 } from "zod";
103325
- var BASE_URL30 = "https://api.linkedin.com/rest/";
103326
- var LINKEDIN_VERSION = "202603";
103434
+
103435
+ // ../connectors/src/connectors/google-audit-log/parameters.ts
103436
+ var parameters52 = {
103437
+ serviceAccountKeyJsonBase64: new ParameterDefinition({
103438
+ slug: "service-account-key-json-base64",
103439
+ name: "Google Cloud Service Account JSON",
103440
+ 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.",
103441
+ envVarBaseKey: "GOOGLE_AUDIT_LOG_SERVICE_ACCOUNT_JSON_BASE64",
103442
+ type: "base64EncodedJson",
103443
+ secret: true,
103444
+ required: true
103445
+ })
103446
+ };
103447
+
103448
+ // ../connectors/src/connectors/google-audit-log/tools/request-with-delegation.ts
103449
+ var BASE_URL30 = "https://admin.googleapis.com/admin/reports/v1";
103327
103450
  var REQUEST_TIMEOUT_MS48 = 6e4;
103451
+ function decodeServiceAccount4(keyJsonBase64) {
103452
+ const decoded = Buffer.from(keyJsonBase64, "base64").toString("utf-8");
103453
+ return JSON.parse(decoded);
103454
+ }
103455
+ var inputSchema63 = z65.object({
103456
+ toolUseIntent: z65.string().optional().describe(
103457
+ "Brief description of what you intend to accomplish with this tool call"
103458
+ ),
103459
+ connectionId: z65.string().describe(
103460
+ "ID of the Google Audit Log (Admin SDK Reports) service account connection to use"
103461
+ ),
103462
+ method: z65.enum(["GET"]).describe("HTTP method. Reports API is read-only."),
103463
+ path: z65.string().describe(
103464
+ "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'."
103465
+ ),
103466
+ subject: z65.string().describe(
103467
+ "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."
103468
+ ),
103469
+ scopes: z65.array(z65.string()).describe(
103470
+ "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."
103471
+ ),
103472
+ queryParams: z65.record(z65.string(), z65.string()).optional().describe(
103473
+ "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' })"
103474
+ )
103475
+ });
103476
+ var outputSchema63 = z65.discriminatedUnion("success", [
103477
+ z65.object({
103478
+ success: z65.literal(true),
103479
+ status: z65.number(),
103480
+ data: z65.record(z65.string(), z65.unknown()),
103481
+ serviceAccountEmail: z65.string()
103482
+ }),
103483
+ z65.object({
103484
+ success: z65.literal(false),
103485
+ error: z65.string(),
103486
+ serviceAccountEmail: z65.string().optional()
103487
+ })
103488
+ ]);
103489
+ var requestWithDelegationTool3 = new ConnectorTool({
103490
+ name: "request_with_delegation",
103491
+ 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.",
103492
+ inputSchema: inputSchema63,
103493
+ outputSchema: outputSchema63,
103494
+ async execute({ connectionId, method, path: path5, subject, scopes, queryParams }, connections) {
103495
+ const connection = connections.find((c6) => c6.id === connectionId);
103496
+ if (!connection) {
103497
+ return {
103498
+ success: false,
103499
+ error: `Connection ${connectionId} not found`
103500
+ };
103501
+ }
103502
+ const keyJsonBase64 = parameters52.serviceAccountKeyJsonBase64.getValue(connection);
103503
+ let serviceAccount;
103504
+ try {
103505
+ serviceAccount = decodeServiceAccount4(keyJsonBase64);
103506
+ } catch (err) {
103507
+ const msg = err instanceof Error ? err.message : String(err);
103508
+ return {
103509
+ success: false,
103510
+ error: `Failed to decode service account key: ${msg}`
103511
+ };
103512
+ }
103513
+ const serviceAccountEmail = serviceAccount.client_email;
103514
+ console.log(
103515
+ `[connector-request] google-audit-log/${connection.name}: ${method} ${path5} subject=${subject}`
103516
+ );
103517
+ try {
103518
+ const { GoogleAuth } = await import("google-auth-library");
103519
+ const auth = new GoogleAuth({
103520
+ credentials: {
103521
+ client_email: serviceAccount.client_email,
103522
+ private_key: serviceAccount.private_key
103523
+ },
103524
+ scopes,
103525
+ clientOptions: { subject }
103526
+ });
103527
+ const token = await auth.getAccessToken();
103528
+ if (!token) {
103529
+ return {
103530
+ success: false,
103531
+ error: "Failed to obtain access token",
103532
+ serviceAccountEmail
103533
+ };
103534
+ }
103535
+ let url = `${BASE_URL30}${path5.startsWith("/") ? "" : "/"}${path5}`;
103536
+ if (queryParams) {
103537
+ const searchParams = new URLSearchParams(queryParams);
103538
+ url += `?${searchParams.toString()}`;
103539
+ }
103540
+ const controller = new AbortController();
103541
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS48);
103542
+ try {
103543
+ const response = await fetch(url, {
103544
+ method,
103545
+ headers: {
103546
+ Authorization: `Bearer ${token}`,
103547
+ "Content-Type": "application/json"
103548
+ },
103549
+ signal: controller.signal
103550
+ });
103551
+ const data = await response.json().catch(() => ({}));
103552
+ if (!response.ok) {
103553
+ const errorObj = data?.error;
103554
+ const errorMessage = errorObj?.message ?? (typeof data?.message === "string" ? data.message : `HTTP ${response.status} ${response.statusText}`);
103555
+ return {
103556
+ success: false,
103557
+ error: errorMessage,
103558
+ serviceAccountEmail
103559
+ };
103560
+ }
103561
+ return {
103562
+ success: true,
103563
+ status: response.status,
103564
+ data,
103565
+ serviceAccountEmail
103566
+ };
103567
+ } finally {
103568
+ clearTimeout(timeout);
103569
+ }
103570
+ } catch (err) {
103571
+ const msg = err instanceof Error ? err.message : String(err);
103572
+ return {
103573
+ success: false,
103574
+ error: msg,
103575
+ serviceAccountEmail
103576
+ };
103577
+ }
103578
+ }
103579
+ });
103580
+
103581
+ // ../connectors/src/connectors/google-audit-log/setup.ts
103582
+ var requestWithDelegationToolName3 = `google-audit-log-service-account_${requestWithDelegationTool3.name}`;
103583
+ var READONLY_SCOPES3 = '["https://www.googleapis.com/auth/admin.reports.audit.readonly", "https://www.googleapis.com/auth/admin.reports.usage.readonly"]';
103584
+ var googleAuditLogOnboarding = new ConnectorOnboarding({
103585
+ connectionSetupInstructions: {
103586
+ 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
103587
+
103588
+ 1. \`askUserQuestion\` \u3067\u5BFE\u8C61\u306E Workspace \u7BA1\u7406\u8005\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u805E\u304F:
103589
+ - \`type\`: \`"freeText"\`
103590
+ - \`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
103591
+ - \`placeholder\`: \`"admin@example.com"\`
103592
+
103593
+ 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:
103594
+ - \`method\`: \`"GET"\`
103595
+ - \`path\`: \`"/activity/users/all/applications/login"\`
103596
+ - \`subject\`: \`<email>\`
103597
+ - \`scopes\`: \`${READONLY_SCOPES3}\`
103598
+ - \`queryParams\`: \`{ "maxResults": "1" }\`
103599
+
103600
+ 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
103601
+ - \`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" }]\`
103602
+ - \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
103603
+ - \u300C\u5165\u529B\u3057\u76F4\u3059\u300D: \u30B9\u30C6\u30C3\u30D7 1 \u304B\u3089\u518D\u5B9F\u884C
103604
+
103605
+ 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:
103606
+ - \`- subject: admin@example.com\`
103607
+
103608
+ #### \u5236\u7D04
103609
+ - \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
103610
+ - \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`,
103611
+ 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.
103612
+
103613
+ 1. Call \`askUserQuestion\` to collect target admin emails:
103614
+ - \`type\`: \`"freeText"\`
103615
+ - \`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."
103616
+ - \`placeholder\`: \`"admin@example.com"\`
103617
+
103618
+ 2. Extract individual emails from the response. For each \`<email>\`, verify Domain-wide Delegation access by calling \`${requestWithDelegationToolName3}\`:
103619
+ - \`method\`: \`"GET"\`
103620
+ - \`path\`: \`"/activity/users/all/applications/login"\`
103621
+ - \`subject\`: \`<email>\`
103622
+ - \`scopes\`: \`${READONLY_SCOPES3}\`
103623
+ - \`queryParams\`: \`{ "maxResults": "1" }\`
103624
+
103625
+ 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))".
103626
+ - \`options\`: \`[{ label: "Authorized Domain-wide Delegation \u2014 retry", value: "retry" }, { label: "Re-enter the email addresses", value: "restart" }]\`
103627
+ - On "retry" \u2192 re-run step 2 with the previously entered email list
103628
+ - On "Re-enter" \u2192 re-run step 1
103629
+
103630
+ 4. Once every email succeeds, call \`finalizeSetup\`. Under \`#### \u30B9\u30B3\u30FC\u30D7\` in \`projectKnowledge\`, list each email on its own line:
103631
+ - \`- subject: admin@example.com\`
103632
+
103633
+ #### Constraints
103634
+ - Do NOT read audit log contents during setup. Only the access verification call in step 2 is permitted
103635
+ - Write at most 1 sentence between tool calls`
103636
+ },
103637
+ dataOverviewInstructions: {
103638
+ 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.
103639
+
103640
+ 1. \`method=GET\`, \`path=/activity/users/all/applications/login\`, \`queryParams={ maxResults: "10" }\` to verify recent login activity events are available.
103641
+ 2. \`method=GET\`, \`path=/activity/users/all/applications/admin\`, \`queryParams={ maxResults: "10" }\` to inspect recent admin console events.
103642
+ 3. \`method=GET\`, \`path=/usage/dates/{YYYY-MM-DD}\` (use yesterday's date) to fetch a customer-level usage report sample.`,
103643
+ 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
103644
+
103645
+ 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
103646
+ 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
103647
+ 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`
103648
+ }
103649
+ });
103650
+
103651
+ // ../connectors/src/connectors/google-audit-log/index.ts
103652
+ var tools52 = { request_with_delegation: requestWithDelegationTool3 };
103653
+ var googleAuditLogConnector = new ConnectorPlugin({
103654
+ slug: "google-audit-log",
103655
+ authType: AUTH_TYPES.SERVICE_ACCOUNT,
103656
+ name: "Google Audit Log",
103657
+ 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.",
103658
+ iconUrl: "https://www.gstatic.com/images/branding/product/2x/admin_2020q4_48dp.png",
103659
+ parameters: parameters52,
103660
+ releaseFlag: { dev1: true, dev2: false, prod: false },
103661
+ categories: ["observability"],
103662
+ onboarding: googleAuditLogOnboarding,
103663
+ systemPrompt: {
103664
+ en: `### Tools
103665
+
103666
+ - \`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\`.
103667
+
103668
+ ### OAuth Scopes (pass as \`scopes\` argument)
103669
+
103670
+ This connector is read-only. Pass one or both:
103671
+
103672
+ - \`https://www.googleapis.com/auth/admin.reports.audit.readonly\` \u2014 audit activity events (Activities API)
103673
+ - \`https://www.googleapis.com/auth/admin.reports.usage.readonly\` \u2014 usage reports (Customer/User Usage API)
103674
+
103675
+ 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.
103676
+
103677
+ Per-endpoint reference: https://developers.google.com/admin-sdk/reports/v1/reference
103678
+
103679
+ ### Reports API Reference
103680
+
103681
+ #### Activities (audit logs)
103682
+ - GET \`/activity/users/all/applications/{applicationName}\` \u2014 list activity events across all users for an application
103683
+ - GET \`/activity/users/{userKey}/applications/{applicationName}\` \u2014 list activity events for a specific user (\`userKey\` is the user's email or immutable ID)
103684
+ - GET \`/activity/users/all/applications/{applicationName}/watch\` \u2014 (not supported here, push notifications)
103685
+
103686
+ \`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\`.
103687
+
103688
+ Common Activities query parameters (pass via \`queryParams\`):
103689
+ - \`startTime\` / \`endTime\` \u2014 ISO-8601 timestamps (e.g., \`2025-04-01T00:00:00Z\`)
103690
+ - \`eventName\` \u2014 filter by a specific event (e.g., \`login_success\`, \`login_failure\`, \`document_open\`)
103691
+ - \`filters\` \u2014 comma-separated event-parameter filters (e.g., \`doc_type==document\`)
103692
+ - \`actorIpAddress\` \u2014 filter by IP
103693
+ - \`maxResults\` \u2014 page size (default 1000)
103694
+ - \`pageToken\` \u2014 pagination token from previous response's \`nextPageToken\`
103695
+
103696
+ #### Usage reports
103697
+ - GET \`/usage/dates/{date}\` \u2014 customer-level usage on a specific date (\`YYYY-MM-DD\`)
103698
+ - GET \`/usage/users/all/dates/{date}\` \u2014 per-user usage on a specific date
103699
+ - GET \`/usage/users/{userKey}/dates/{date}\` \u2014 usage for a single user on a specific date
103700
+
103701
+ Common Usage query parameters:
103702
+ - \`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.
103703
+ - \`filters\` \u2014 filter expression on the same metric namespace
103704
+ - \`maxResults\` / \`pageToken\` \u2014 pagination
103705
+
103706
+ ### Business Logic
103707
+
103708
+ 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.
103709
+
103710
+ SDK methods (client created via \`connection(connectionId)\`):
103711
+
103712
+ - \`client.requestWithDelegation(path, { subject, scopes, init? })\` \u2014 call the Reports API as the impersonated Workspace admin. Pass the minimum scopes required.
103713
+
103714
+ The method returns a standard \`Response\`. Read the body with \`.json()\`. Same path conventions as the tool.
103715
+
103716
+ #### Example
103717
+
103718
+ \`\`\`ts
103719
+ import type { Context } from "hono";
103720
+ import { connection } from "@squadbase/vite-server/connectors/google-audit-log";
103721
+
103722
+ const reports = connection("<connectionId>");
103723
+
103724
+ const SUBJECT = "admin@example.com"; // pick from "#### \u30B9\u30B3\u30FC\u30D7" in project knowledge
103725
+ const AUDIT = ["https://www.googleapis.com/auth/admin.reports.audit.readonly"];
103726
+
103727
+ export default async function handler(c: Context) {
103728
+ const { startTime, endTime } = await c.req.json<{
103729
+ startTime: string;
103730
+ endTime: string;
103731
+ }>();
103732
+
103733
+ const params = new URLSearchParams({
103734
+ startTime,
103735
+ endTime,
103736
+ maxResults: "100",
103737
+ });
103738
+ const res = await reports.requestWithDelegation(
103739
+ \`/activity/users/all/applications/login?\${params}\`,
103740
+ { subject: SUBJECT, scopes: AUDIT },
103741
+ );
103742
+ const data = (await res.json()) as { items?: { id: { time: string }; events?: { name: string }[]; actor?: { email?: string } }[] };
103743
+
103744
+ return c.json(
103745
+ (data.items ?? []).map((item) => ({
103746
+ time: item.id.time,
103747
+ actor: item.actor?.email,
103748
+ event: item.events?.[0]?.name,
103749
+ })),
103750
+ );
103751
+ }
103752
+ \`\`\``,
103753
+ ja: `### \u30C4\u30FC\u30EB
103754
+
103755
+ - \`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
103756
+
103757
+ ### OAuth \u30B9\u30B3\u30FC\u30D7 (\`scopes\` \u5F15\u6570\u3067\u6E21\u3059)
103758
+
103759
+ \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:
103760
+
103761
+ - \`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)
103762
+ - \`https://www.googleapis.com/auth/admin.reports.usage.readonly\` \u2014 \u5229\u7528\u30EC\u30DD\u30FC\u30C8 (Customer/User Usage API)
103763
+
103764
+ \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
103765
+
103766
+ \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
103767
+
103768
+ ### Reports API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
103769
+
103770
+ #### Activities\uFF08\u76E3\u67FB\u30ED\u30B0\uFF09
103771
+ - 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
103772
+ - 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
103773
+
103774
+ \`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
103775
+
103776
+ \u4E3B\u306A\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08\`queryParams\` \u306B\u6E21\u3059\uFF09:
103777
+ - \`startTime\` / \`endTime\` \u2014 ISO-8601 \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\uFF08\u4F8B: \`2025-04-01T00:00:00Z\`\uFF09
103778
+ - \`eventName\` \u2014 \u7279\u5B9A\u306E\u30A4\u30D9\u30F3\u30C8\u3067\u30D5\u30A3\u30EB\u30BF\uFF08\u4F8B: \`login_success\`, \`login_failure\`, \`document_open\`\uFF09
103779
+ - \`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
103780
+ - \`actorIpAddress\` \u2014 IP\u30A2\u30C9\u30EC\u30B9\u3067\u30D5\u30A3\u30EB\u30BF
103781
+ - \`maxResults\` \u2014 \u30DA\u30FC\u30B8\u30B5\u30A4\u30BA\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8 1000\uFF09
103782
+ - \`pageToken\` \u2014 \u30EC\u30B9\u30DD\u30F3\u30B9\u306E \`nextPageToken\` \u3092\u6E21\u3057\u3066\u30DA\u30FC\u30B8\u30F3\u30B0
103783
+
103784
+ #### Usage\uFF08\u5229\u7528\u30EC\u30DD\u30FC\u30C8\uFF09
103785
+ - 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
103786
+ - GET \`/usage/users/all/dates/{date}\` \u2014 \u6307\u5B9A\u65E5\u306E\u5168\u30E6\u30FC\u30B6\u30FC\u5229\u7528\u30EC\u30DD\u30FC\u30C8
103787
+ - GET \`/usage/users/{userKey}/dates/{date}\` \u2014 \u6307\u5B9A\u65E5\u306E\u7279\u5B9A\u30E6\u30FC\u30B6\u30FC\u306E\u5229\u7528\u30EC\u30DD\u30FC\u30C8
103788
+
103789
+ \u4E3B\u306A\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF:
103790
+ - \`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
103791
+ - \`filters\` \u2014 \u30E1\u30C8\u30EA\u30AF\u30B9\u306B\u5BFE\u3059\u308B\u30D5\u30A3\u30EB\u30BF\u5F0F
103792
+ - \`maxResults\` / \`pageToken\` \u2014 \u30DA\u30FC\u30B8\u30F3\u30B0
103793
+
103794
+ ### Business Logic
103795
+
103796
+ \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
103797
+
103798
+ SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
103799
+
103800
+ - \`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
103801
+
103802
+ \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
103803
+
103804
+ #### Example
103805
+
103806
+ \`\`\`ts
103807
+ import type { Context } from "hono";
103808
+ import { connection } from "@squadbase/vite-server/connectors/google-audit-log";
103809
+
103810
+ const reports = connection("<connectionId>");
103811
+
103812
+ const SUBJECT = "admin@example.com"; // Project Knowledge \u306E "#### \u30B9\u30B3\u30FC\u30D7" \u304B\u3089\u9078\u3076
103813
+ const AUDIT = ["https://www.googleapis.com/auth/admin.reports.audit.readonly"];
103814
+
103815
+ export default async function handler(c: Context) {
103816
+ const { startTime, endTime } = await c.req.json<{
103817
+ startTime: string;
103818
+ endTime: string;
103819
+ }>();
103820
+
103821
+ const params = new URLSearchParams({
103822
+ startTime,
103823
+ endTime,
103824
+ maxResults: "100",
103825
+ });
103826
+ const res = await reports.requestWithDelegation(
103827
+ \`/activity/users/all/applications/login?\${params}\`,
103828
+ { subject: SUBJECT, scopes: AUDIT },
103829
+ );
103830
+ const data = (await res.json()) as { items?: { id: { time: string }; events?: { name: string }[]; actor?: { email?: string } }[] };
103831
+
103832
+ return c.json(
103833
+ (data.items ?? []).map((item) => ({
103834
+ time: item.id.time,
103835
+ actor: item.actor?.email,
103836
+ event: item.events?.[0]?.name,
103837
+ })),
103838
+ );
103839
+ }
103840
+ \`\`\``
103841
+ },
103842
+ tools: tools52
103843
+ });
103844
+
103845
+ // ../connectors/src/connectors/linkedin-ads/tools/list-ad-accounts.ts
103846
+ import { z as z66 } from "zod";
103847
+ var BASE_URL31 = "https://api.linkedin.com/rest/";
103848
+ var LINKEDIN_VERSION = "202603";
103849
+ var REQUEST_TIMEOUT_MS49 = 6e4;
103328
103850
  var cachedToken26 = null;
103329
103851
  async function getProxyToken26(config) {
103330
103852
  if (cachedToken26 && cachedToken26.expiresAt > Date.now() + 6e4) {
@@ -103356,32 +103878,32 @@ async function getProxyToken26(config) {
103356
103878
  };
103357
103879
  return data.token;
103358
103880
  }
103359
- var inputSchema63 = z65.object({
103360
- toolUseIntent: z65.string().optional().describe(
103881
+ var inputSchema64 = z66.object({
103882
+ toolUseIntent: z66.string().optional().describe(
103361
103883
  "Brief description of what you intend to accomplish with this tool call"
103362
103884
  ),
103363
- connectionId: z65.string().describe("ID of the LinkedIn Ads OAuth connection to use")
103885
+ connectionId: z66.string().describe("ID of the LinkedIn Ads OAuth connection to use")
103364
103886
  });
103365
- var outputSchema63 = z65.discriminatedUnion("success", [
103366
- z65.object({
103367
- success: z65.literal(true),
103368
- adAccounts: z65.array(
103369
- z65.object({
103370
- adAccountId: z65.string(),
103371
- name: z65.string()
103887
+ var outputSchema64 = z66.discriminatedUnion("success", [
103888
+ z66.object({
103889
+ success: z66.literal(true),
103890
+ adAccounts: z66.array(
103891
+ z66.object({
103892
+ adAccountId: z66.string(),
103893
+ name: z66.string()
103372
103894
  })
103373
103895
  )
103374
103896
  }),
103375
- z65.object({
103376
- success: z65.literal(false),
103377
- error: z65.string()
103897
+ z66.object({
103898
+ success: z66.literal(false),
103899
+ error: z66.string()
103378
103900
  })
103379
103901
  ]);
103380
103902
  var listAdAccountsTool3 = new ConnectorTool({
103381
103903
  name: "listAdAccounts",
103382
103904
  description: "List LinkedIn ad accounts accessible with the current OAuth credentials.",
103383
- inputSchema: inputSchema63,
103384
- outputSchema: outputSchema63,
103905
+ inputSchema: inputSchema64,
103906
+ outputSchema: outputSchema64,
103385
103907
  async execute({ connectionId }, connections, config) {
103386
103908
  const connection = connections.find((c6) => c6.id === connectionId);
103387
103909
  if (!connection) {
@@ -103397,7 +103919,7 @@ var listAdAccountsTool3 = new ConnectorTool({
103397
103919
  const token = await getProxyToken26(config.oauthProxy);
103398
103920
  const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
103399
103921
  const controller = new AbortController();
103400
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS48);
103922
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS49);
103401
103923
  try {
103402
103924
  const response = await fetch(proxyUrl, {
103403
103925
  method: "POST",
@@ -103406,7 +103928,7 @@ var listAdAccountsTool3 = new ConnectorTool({
103406
103928
  Authorization: `Bearer ${token}`
103407
103929
  },
103408
103930
  body: JSON.stringify({
103409
- url: `${BASE_URL30}adAccounts?q=search&search=(status:(values:List(ACTIVE)))&pageSize=100`,
103931
+ url: `${BASE_URL31}adAccounts?q=search&search=(status:(values:List(ACTIVE)))&pageSize=100`,
103410
103932
  method: "GET",
103411
103933
  headers: {
103412
103934
  "LinkedIn-Version": LINKEDIN_VERSION,
@@ -103475,7 +103997,7 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
103475
103997
  });
103476
103998
 
103477
103999
  // ../connectors/src/connectors/linkedin-ads/parameters.ts
103478
- var parameters52 = {
104000
+ var parameters53 = {
103479
104001
  adAccountId: new ParameterDefinition({
103480
104002
  slug: "ad-account-id",
103481
104003
  name: "Ad Account ID",
@@ -103488,10 +104010,10 @@ var parameters52 = {
103488
104010
  };
103489
104011
 
103490
104012
  // ../connectors/src/connectors/linkedin-ads/tools/request.ts
103491
- import { z as z66 } from "zod";
103492
- var BASE_URL31 = "https://api.linkedin.com/rest/";
104013
+ import { z as z67 } from "zod";
104014
+ var BASE_URL32 = "https://api.linkedin.com/rest/";
103493
104015
  var LINKEDIN_VERSION2 = "202603";
103494
- var REQUEST_TIMEOUT_MS49 = 6e4;
104016
+ var REQUEST_TIMEOUT_MS50 = 6e4;
103495
104017
  var cachedToken27 = null;
103496
104018
  async function getProxyToken27(config) {
103497
104019
  if (cachedToken27 && cachedToken27.expiresAt > Date.now() + 6e4) {
@@ -103523,27 +104045,27 @@ async function getProxyToken27(config) {
103523
104045
  };
103524
104046
  return data.token;
103525
104047
  }
103526
- var inputSchema64 = z66.object({
103527
- toolUseIntent: z66.string().optional().describe(
104048
+ var inputSchema65 = z67.object({
104049
+ toolUseIntent: z67.string().optional().describe(
103528
104050
  "Brief description of what you intend to accomplish with this tool call"
103529
104051
  ),
103530
- connectionId: z66.string().describe("ID of the LinkedIn Ads OAuth connection to use"),
103531
- method: z66.enum(["GET", "POST", "DELETE"]).describe("HTTP method"),
103532
- path: z66.string().describe(
104052
+ connectionId: z67.string().describe("ID of the LinkedIn Ads OAuth connection to use"),
104053
+ method: z67.enum(["GET", "POST", "DELETE"]).describe("HTTP method"),
104054
+ path: z67.string().describe(
103533
104055
  "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."
103534
104056
  ),
103535
- queryParams: z66.record(z66.string(), z66.string()).optional().describe("Query parameters to append to the URL"),
103536
- body: z66.record(z66.string(), z66.unknown()).optional().describe("Request body (JSON). For partial updates, use the patch format: { patch: { $set: { ... } } }")
104057
+ queryParams: z67.record(z67.string(), z67.string()).optional().describe("Query parameters to append to the URL"),
104058
+ body: z67.record(z67.string(), z67.unknown()).optional().describe("Request body (JSON). For partial updates, use the patch format: { patch: { $set: { ... } } }")
103537
104059
  });
103538
- var outputSchema64 = z66.discriminatedUnion("success", [
103539
- z66.object({
103540
- success: z66.literal(true),
103541
- status: z66.number(),
103542
- data: z66.unknown()
104060
+ var outputSchema65 = z67.discriminatedUnion("success", [
104061
+ z67.object({
104062
+ success: z67.literal(true),
104063
+ status: z67.number(),
104064
+ data: z67.unknown()
103543
104065
  }),
103544
- z66.object({
103545
- success: z66.literal(false),
103546
- error: z66.string()
104066
+ z67.object({
104067
+ success: z67.literal(false),
104068
+ error: z67.string()
103547
104069
  })
103548
104070
  ]);
103549
104071
  var requestTool36 = new ConnectorTool({
@@ -103552,8 +104074,8 @@ var requestTool36 = new ConnectorTool({
103552
104074
  Authentication is handled automatically via OAuth proxy.
103553
104075
  {adAccountId} in the path is automatically replaced with the connection's ad account ID.
103554
104076
  Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatically.`,
103555
- inputSchema: inputSchema64,
103556
- outputSchema: outputSchema64,
104077
+ inputSchema: inputSchema65,
104078
+ outputSchema: outputSchema65,
103557
104079
  async execute({ connectionId, method, path: path5, queryParams, body }, connections, config) {
103558
104080
  const connection = connections.find((c6) => c6.id === connectionId);
103559
104081
  if (!connection) {
@@ -103566,9 +104088,9 @@ Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatic
103566
104088
  `[connector-request] linkedin-ads/${connection.name}: ${method} ${path5}`
103567
104089
  );
103568
104090
  try {
103569
- const adAccountId = parameters52.adAccountId.tryGetValue(connection) ?? "";
104091
+ const adAccountId = parameters53.adAccountId.tryGetValue(connection) ?? "";
103570
104092
  const resolvedPath = adAccountId ? path5.replace(/\{adAccountId\}/g, adAccountId) : path5;
103571
- let url = `${BASE_URL31}${resolvedPath}`;
104093
+ let url = `${BASE_URL32}${resolvedPath}`;
103572
104094
  if (queryParams && Object.keys(queryParams).length > 0) {
103573
104095
  const params = new URLSearchParams(queryParams);
103574
104096
  const separator = url.includes("?") ? "&" : "?";
@@ -103577,7 +104099,7 @@ Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatic
103577
104099
  const token = await getProxyToken27(config.oauthProxy);
103578
104100
  const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
103579
104101
  const controller = new AbortController();
103580
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS49);
104102
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS50);
103581
104103
  try {
103582
104104
  const additionalHeaders = {
103583
104105
  "LinkedIn-Version": LINKEDIN_VERSION2,
@@ -103621,7 +104143,7 @@ Required headers (LinkedIn-Version, X-Restli-Protocol-Version) are set automatic
103621
104143
  });
103622
104144
 
103623
104145
  // ../connectors/src/connectors/linkedin-ads/index.ts
103624
- var tools52 = {
104146
+ var tools53 = {
103625
104147
  request: requestTool36,
103626
104148
  listAdAccounts: listAdAccountsTool3
103627
104149
  };
@@ -103631,8 +104153,9 @@ var linkedinAdsConnector = new ConnectorPlugin({
103631
104153
  name: "LinkedIn Ads",
103632
104154
  description: "Connect to LinkedIn Ads (Marketing API) for advertising campaign data and reporting using OAuth.",
103633
104155
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3x7xd9pVJkRFY7ADIg4ycq/b94720e34cb081e9ae45dfde799a59cd/LinkedIn_icon.svg.png",
103634
- parameters: parameters52,
104156
+ parameters: parameters53,
103635
104157
  releaseFlag: { dev1: true, dev2: false, prod: false },
104158
+ categories: ["marketing"],
103636
104159
  onboarding: linkedinAdsOnboarding,
103637
104160
  proxyPolicy: {
103638
104161
  allowlist: [
@@ -103830,7 +104353,7 @@ const res = await linkedin.request("adAccounts/{adAccountId}/adCampaigns?q=searc
103830
104353
  const data = await res.json();
103831
104354
  \`\`\``
103832
104355
  },
103833
- tools: tools52,
104356
+ tools: tools53,
103834
104357
  async checkConnection(_params, config) {
103835
104358
  const { proxyFetch } = config;
103836
104359
  try {
@@ -103874,7 +104397,7 @@ var zendeskOnboarding = new ConnectorOnboarding({
103874
104397
  });
103875
104398
 
103876
104399
  // ../connectors/src/connectors/zendesk/parameters.ts
103877
- var parameters53 = {
104400
+ var parameters54 = {
103878
104401
  subdomain: new ParameterDefinition({
103879
104402
  slug: "subdomain",
103880
104403
  name: "Zendesk Subdomain",
@@ -103905,30 +104428,30 @@ var parameters53 = {
103905
104428
  };
103906
104429
 
103907
104430
  // ../connectors/src/connectors/zendesk/tools/request.ts
103908
- import { z as z67 } from "zod";
103909
- var REQUEST_TIMEOUT_MS50 = 6e4;
103910
- var inputSchema65 = z67.object({
103911
- toolUseIntent: z67.string().optional().describe(
104431
+ import { z as z68 } from "zod";
104432
+ var REQUEST_TIMEOUT_MS51 = 6e4;
104433
+ var inputSchema66 = z68.object({
104434
+ toolUseIntent: z68.string().optional().describe(
103912
104435
  "Brief description of what you intend to accomplish with this tool call"
103913
104436
  ),
103914
- connectionId: z67.string().describe("ID of the Zendesk connection to use"),
103915
- method: z67.enum(["GET", "POST", "PUT", "DELETE"]).describe(
104437
+ connectionId: z68.string().describe("ID of the Zendesk connection to use"),
104438
+ method: z68.enum(["GET", "POST", "PUT", "DELETE"]).describe(
103916
104439
  "HTTP method. GET for reading, POST for creating/searching, PUT for updating, DELETE for removing."
103917
104440
  ),
103918
- path: z67.string().describe(
104441
+ path: z68.string().describe(
103919
104442
  "API path appended to https://{subdomain}.zendesk.com (e.g., '/api/v2/tickets.json', '/api/v2/search.json?query=status:open')"
103920
104443
  ),
103921
- body: z67.record(z67.string(), z67.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104444
+ body: z68.record(z68.string(), z68.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
103922
104445
  });
103923
- var outputSchema65 = z67.discriminatedUnion("success", [
103924
- z67.object({
103925
- success: z67.literal(true),
103926
- status: z67.number(),
103927
- data: z67.record(z67.string(), z67.unknown())
104446
+ var outputSchema66 = z68.discriminatedUnion("success", [
104447
+ z68.object({
104448
+ success: z68.literal(true),
104449
+ status: z68.number(),
104450
+ data: z68.record(z68.string(), z68.unknown())
103928
104451
  }),
103929
- z67.object({
103930
- success: z67.literal(false),
103931
- error: z67.string()
104452
+ z68.object({
104453
+ success: z68.literal(false),
104454
+ error: z68.string()
103932
104455
  })
103933
104456
  ]);
103934
104457
  var requestTool37 = new ConnectorTool({
@@ -103937,8 +104460,8 @@ var requestTool37 = new ConnectorTool({
103937
104460
  Authentication is handled automatically using email/token Basic auth.
103938
104461
  Use this tool for all Zendesk API interactions: querying tickets, users, organizations, groups, and searching.
103939
104462
  Zendesk uses cursor-based pagination with page[size] and page[after] parameters. All endpoints return .json suffix.`,
103940
- inputSchema: inputSchema65,
103941
- outputSchema: outputSchema65,
104463
+ inputSchema: inputSchema66,
104464
+ outputSchema: outputSchema66,
103942
104465
  async execute({ connectionId, method, path: path5, body }, connections) {
103943
104466
  const connection = connections.find((c6) => c6.id === connectionId);
103944
104467
  if (!connection) {
@@ -103951,15 +104474,15 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
103951
104474
  `[connector-request] zendesk/${connection.name}: ${method} ${path5}`
103952
104475
  );
103953
104476
  try {
103954
- const subdomain = parameters53.subdomain.getValue(connection);
103955
- const email = parameters53.email.getValue(connection);
103956
- const apiToken = parameters53.apiToken.getValue(connection);
104477
+ const subdomain = parameters54.subdomain.getValue(connection);
104478
+ const email = parameters54.email.getValue(connection);
104479
+ const apiToken = parameters54.apiToken.getValue(connection);
103957
104480
  const authToken = Buffer.from(`${email}/token:${apiToken}`).toString(
103958
104481
  "base64"
103959
104482
  );
103960
104483
  const url = `https://${subdomain}.zendesk.com${path5.startsWith("/") ? "" : "/"}${path5}`;
103961
104484
  const controller = new AbortController();
103962
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS50);
104485
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS51);
103963
104486
  try {
103964
104487
  const response = await fetch(url, {
103965
104488
  method,
@@ -103987,15 +104510,16 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
103987
104510
  });
103988
104511
 
103989
104512
  // ../connectors/src/connectors/zendesk/index.ts
103990
- var tools53 = { request: requestTool37 };
104513
+ var tools54 = { request: requestTool37 };
103991
104514
  var zendeskConnector = new ConnectorPlugin({
103992
104515
  slug: "zendesk",
103993
104516
  authType: AUTH_TYPES.API_KEY,
103994
104517
  name: "Zendesk",
103995
104518
  description: "Connect to Zendesk Support for tickets, users, organizations, and customer service data using an API token.",
103996
104519
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7e9Q7PwV6MJRJMj543m2gl/55385fae903ccfa1599e35be9d3516aa/zendesk-icon.svg",
103997
- parameters: parameters53,
104520
+ parameters: parameters54,
103998
104521
  releaseFlag: { dev1: true, dev2: true, prod: true },
104522
+ categories: ["crm"],
103999
104523
  onboarding: zendeskOnboarding,
104000
104524
  systemPrompt: {
104001
104525
  en: `### Tools
@@ -104171,12 +104695,12 @@ export default async function handler(c: Context) {
104171
104695
  - \`type:user role:agent\` \u2014 \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30E6\u30FC\u30B6\u30FC
104172
104696
  - \`type:organization {name}\` \u2014 \u540D\u524D\u304C\u4E00\u81F4\u3059\u308B\u7D44\u7E54`
104173
104697
  },
104174
- tools: tools53
104698
+ tools: tools54
104175
104699
  });
104176
104700
 
104177
104701
  // ../connectors/src/connectors/zendesk-oauth/tools/request.ts
104178
- import { z as z68 } from "zod";
104179
- var REQUEST_TIMEOUT_MS51 = 6e4;
104702
+ import { z as z69 } from "zod";
104703
+ var REQUEST_TIMEOUT_MS52 = 6e4;
104180
104704
  var cachedToken28 = null;
104181
104705
  async function getProxyToken28(config) {
104182
104706
  if (cachedToken28 && cachedToken28.expiresAt > Date.now() + 6e4) {
@@ -104208,27 +104732,27 @@ async function getProxyToken28(config) {
104208
104732
  };
104209
104733
  return data.token;
104210
104734
  }
104211
- var inputSchema66 = z68.object({
104212
- toolUseIntent: z68.string().optional().describe(
104735
+ var inputSchema67 = z69.object({
104736
+ toolUseIntent: z69.string().optional().describe(
104213
104737
  "Brief description of what you intend to accomplish with this tool call"
104214
104738
  ),
104215
- connectionId: z68.string().describe("ID of the Zendesk OAuth connection to use"),
104216
- method: z68.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
104217
- path: z68.string().describe(
104739
+ connectionId: z69.string().describe("ID of the Zendesk OAuth connection to use"),
104740
+ method: z69.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
104741
+ path: z69.string().describe(
104218
104742
  "API path appended to the Zendesk base URL (e.g., '/api/v2/tickets.json', '/api/v2/search.json?query=status:open')"
104219
104743
  ),
104220
- queryParams: z68.record(z68.string(), z68.string()).optional().describe("Query parameters to append to the URL"),
104221
- body: z68.record(z68.string(), z68.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104744
+ queryParams: z69.record(z69.string(), z69.string()).optional().describe("Query parameters to append to the URL"),
104745
+ body: z69.record(z69.string(), z69.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104222
104746
  });
104223
- var outputSchema66 = z68.discriminatedUnion("success", [
104224
- z68.object({
104225
- success: z68.literal(true),
104226
- status: z68.number(),
104227
- data: z68.record(z68.string(), z68.unknown())
104747
+ var outputSchema67 = z69.discriminatedUnion("success", [
104748
+ z69.object({
104749
+ success: z69.literal(true),
104750
+ status: z69.number(),
104751
+ data: z69.record(z69.string(), z69.unknown())
104228
104752
  }),
104229
- z68.object({
104230
- success: z68.literal(false),
104231
- error: z68.string()
104753
+ z69.object({
104754
+ success: z69.literal(false),
104755
+ error: z69.string()
104232
104756
  })
104233
104757
  ]);
104234
104758
  var requestTool38 = new ConnectorTool({
@@ -104237,8 +104761,8 @@ var requestTool38 = new ConnectorTool({
104237
104761
  Authentication is handled automatically via OAuth proxy.
104238
104762
  Use this tool for all Zendesk API interactions: querying tickets, users, organizations, groups, and searching.
104239
104763
  Zendesk uses cursor-based pagination with page[size] and page[after] parameters. All endpoint paths end with .json.`,
104240
- inputSchema: inputSchema66,
104241
- outputSchema: outputSchema66,
104764
+ inputSchema: inputSchema67,
104765
+ outputSchema: outputSchema67,
104242
104766
  async execute({ connectionId, method, path: path5, queryParams, body }, connections, config) {
104243
104767
  const connection = connections.find((c6) => c6.id === connectionId);
104244
104768
  if (!connection) {
@@ -104260,7 +104784,7 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
104260
104784
  const token = await getProxyToken28(config.oauthProxy);
104261
104785
  const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
104262
104786
  const controller = new AbortController();
104263
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS51);
104787
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS52);
104264
104788
  try {
104265
104789
  const response = await fetch(proxyUrl, {
104266
104790
  method: "POST",
@@ -104329,18 +104853,19 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
104329
104853
  });
104330
104854
 
104331
104855
  // ../connectors/src/connectors/zendesk-oauth/parameters.ts
104332
- var parameters54 = {};
104856
+ var parameters55 = {};
104333
104857
 
104334
104858
  // ../connectors/src/connectors/zendesk-oauth/index.ts
104335
- var tools54 = { request: requestTool38 };
104859
+ var tools55 = { request: requestTool38 };
104336
104860
  var zendeskOauthConnector = new ConnectorPlugin({
104337
104861
  slug: "zendesk",
104338
104862
  authType: AUTH_TYPES.OAUTH,
104339
104863
  name: "Zendesk",
104340
104864
  description: "Connect to Zendesk Support for tickets, users, organizations, and customer service data using OAuth.",
104341
104865
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7e9Q7PwV6MJRJMj543m2gl/55385fae903ccfa1599e35be9d3516aa/zendesk-icon.svg",
104342
- parameters: parameters54,
104866
+ parameters: parameters55,
104343
104867
  releaseFlag: { dev1: true, dev2: false, prod: false },
104868
+ categories: ["crm"],
104344
104869
  onboarding: zendeskOauthOnboarding,
104345
104870
  proxyPolicy: {
104346
104871
  allowlist: [
@@ -104468,7 +104993,7 @@ const res = await zendesk.request("/api/v2/tickets.json?page[size]=10");
104468
104993
  const data = await res.json();
104469
104994
  \`\`\``
104470
104995
  },
104471
- tools: tools54,
104996
+ tools: tools55,
104472
104997
  async checkConnection(_params, config) {
104473
104998
  const { proxyFetch } = config;
104474
104999
  try {
@@ -104507,7 +105032,7 @@ var intercomOnboarding = new ConnectorOnboarding({
104507
105032
  });
104508
105033
 
104509
105034
  // ../connectors/src/connectors/intercom/parameters.ts
104510
- var parameters55 = {
105035
+ var parameters56 = {
104511
105036
  accessToken: new ParameterDefinition({
104512
105037
  slug: "access-token",
104513
105038
  name: "Access Token",
@@ -104520,32 +105045,32 @@ var parameters55 = {
104520
105045
  };
104521
105046
 
104522
105047
  // ../connectors/src/connectors/intercom/tools/request.ts
104523
- import { z as z69 } from "zod";
104524
- var BASE_URL32 = "https://api.intercom.io";
105048
+ import { z as z70 } from "zod";
105049
+ var BASE_URL33 = "https://api.intercom.io";
104525
105050
  var API_VERSION = "2.11";
104526
- var REQUEST_TIMEOUT_MS52 = 6e4;
104527
- var inputSchema67 = z69.object({
104528
- toolUseIntent: z69.string().optional().describe(
105051
+ var REQUEST_TIMEOUT_MS53 = 6e4;
105052
+ var inputSchema68 = z70.object({
105053
+ toolUseIntent: z70.string().optional().describe(
104529
105054
  "Brief description of what you intend to accomplish with this tool call"
104530
105055
  ),
104531
- connectionId: z69.string().describe("ID of the Intercom connection to use"),
104532
- method: z69.enum(["GET", "POST", "PUT", "DELETE"]).describe(
105056
+ connectionId: z70.string().describe("ID of the Intercom connection to use"),
105057
+ method: z70.enum(["GET", "POST", "PUT", "DELETE"]).describe(
104533
105058
  "HTTP method. GET for reading, POST for creating/searching, PUT for updating, DELETE for removing."
104534
105059
  ),
104535
- path: z69.string().describe(
105060
+ path: z70.string().describe(
104536
105061
  "API path appended to https://api.intercom.io (e.g., '/contacts', '/conversations', '/contacts/search')"
104537
105062
  ),
104538
- body: z69.record(z69.string(), z69.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
105063
+ body: z70.record(z70.string(), z70.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104539
105064
  });
104540
- var outputSchema67 = z69.discriminatedUnion("success", [
104541
- z69.object({
104542
- success: z69.literal(true),
104543
- status: z69.number(),
104544
- data: z69.record(z69.string(), z69.unknown())
105065
+ var outputSchema68 = z70.discriminatedUnion("success", [
105066
+ z70.object({
105067
+ success: z70.literal(true),
105068
+ status: z70.number(),
105069
+ data: z70.record(z70.string(), z70.unknown())
104545
105070
  }),
104546
- z69.object({
104547
- success: z69.literal(false),
104548
- error: z69.string()
105071
+ z70.object({
105072
+ success: z70.literal(false),
105073
+ error: z70.string()
104549
105074
  })
104550
105075
  ]);
104551
105076
  var requestTool39 = new ConnectorTool({
@@ -104556,8 +105081,8 @@ Use this tool for all Intercom API interactions: querying contacts, conversation
104556
105081
  Intercom uses cursor-based pagination with the starting_after parameter from pages.next.starting_after in the response.
104557
105082
  Search endpoints (contacts/search, conversations/search) use POST with a query object in the body.
104558
105083
  The Intercom-Version header is set to 2.11 automatically.`,
104559
- inputSchema: inputSchema67,
104560
- outputSchema: outputSchema67,
105084
+ inputSchema: inputSchema68,
105085
+ outputSchema: outputSchema68,
104561
105086
  async execute({ connectionId, method, path: path5, body }, connections) {
104562
105087
  const connection = connections.find((c6) => c6.id === connectionId);
104563
105088
  if (!connection) {
@@ -104570,10 +105095,10 @@ The Intercom-Version header is set to 2.11 automatically.`,
104570
105095
  `[connector-request] intercom/${connection.name}: ${method} ${path5}`
104571
105096
  );
104572
105097
  try {
104573
- const accessToken = parameters55.accessToken.getValue(connection);
104574
- const url = `${BASE_URL32}${path5.startsWith("/") ? "" : "/"}${path5}`;
105098
+ const accessToken = parameters56.accessToken.getValue(connection);
105099
+ const url = `${BASE_URL33}${path5.startsWith("/") ? "" : "/"}${path5}`;
104575
105100
  const controller = new AbortController();
104576
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS52);
105101
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS53);
104577
105102
  try {
104578
105103
  const response = await fetch(url, {
104579
105104
  method,
@@ -104604,15 +105129,16 @@ The Intercom-Version header is set to 2.11 automatically.`,
104604
105129
  });
104605
105130
 
104606
105131
  // ../connectors/src/connectors/intercom/index.ts
104607
- var tools55 = { request: requestTool39 };
105132
+ var tools56 = { request: requestTool39 };
104608
105133
  var intercomConnector = new ConnectorPlugin({
104609
105134
  slug: "intercom",
104610
105135
  authType: AUTH_TYPES.API_KEY,
104611
105136
  name: "Intercom",
104612
105137
  description: "Connect to Intercom for contacts, conversations, companies, and customer engagement data using an Access Token.",
104613
105138
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/sb2cRMGClpId0LKiSqsok/ae90a0849f21ffe3faf73e04a5676b45/intercom.svg",
104614
- parameters: parameters55,
105139
+ parameters: parameters56,
104615
105140
  releaseFlag: { dev1: true, dev2: true, prod: true },
105141
+ categories: ["crm"],
104616
105142
  onboarding: intercomOnboarding,
104617
105143
  systemPrompt: {
104618
105144
  en: `### Tools
@@ -104808,13 +105334,13 @@ export default async function handler(c: Context) {
104808
105334
  - \u8AD6\u7406\u6F14\u7B97\u5B50: \`AND\`, \`OR\`\uFF08\u8907\u6570\u30D5\u30A3\u30EB\u30BF\u306E\u7D50\u5408\uFF09
104809
105335
  - \u65E5\u4ED8\u30D5\u30A3\u30FC\u30EB\u30C9\u306FUnix\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u4F7F\u7528`
104810
105336
  },
104811
- tools: tools55
105337
+ tools: tools56
104812
105338
  });
104813
105339
 
104814
105340
  // ../connectors/src/connectors/intercom-oauth/tools/request.ts
104815
- import { z as z70 } from "zod";
104816
- var BASE_URL33 = "https://api.intercom.io";
104817
- var REQUEST_TIMEOUT_MS53 = 6e4;
105341
+ import { z as z71 } from "zod";
105342
+ var BASE_URL34 = "https://api.intercom.io";
105343
+ var REQUEST_TIMEOUT_MS54 = 6e4;
104818
105344
  var cachedToken29 = null;
104819
105345
  async function getProxyToken29(config) {
104820
105346
  if (cachedToken29 && cachedToken29.expiresAt > Date.now() + 6e4) {
@@ -104846,27 +105372,27 @@ async function getProxyToken29(config) {
104846
105372
  };
104847
105373
  return data.token;
104848
105374
  }
104849
- var inputSchema68 = z70.object({
104850
- toolUseIntent: z70.string().optional().describe(
105375
+ var inputSchema69 = z71.object({
105376
+ toolUseIntent: z71.string().optional().describe(
104851
105377
  "Brief description of what you intend to accomplish with this tool call"
104852
105378
  ),
104853
- connectionId: z70.string().describe("ID of the Intercom OAuth connection to use"),
104854
- method: z70.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
104855
- path: z70.string().describe(
105379
+ connectionId: z71.string().describe("ID of the Intercom OAuth connection to use"),
105380
+ method: z71.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
105381
+ path: z71.string().describe(
104856
105382
  "API path appended to https://api.intercom.io (e.g., '/contacts', '/conversations', '/contacts/search')"
104857
105383
  ),
104858
- queryParams: z70.record(z70.string(), z70.string()).optional().describe("Query parameters to append to the URL"),
104859
- body: z70.record(z70.string(), z70.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
105384
+ queryParams: z71.record(z71.string(), z71.string()).optional().describe("Query parameters to append to the URL"),
105385
+ body: z71.record(z71.string(), z71.unknown()).optional().describe("Request body (JSON) for POST/PUT requests")
104860
105386
  });
104861
- var outputSchema68 = z70.discriminatedUnion("success", [
104862
- z70.object({
104863
- success: z70.literal(true),
104864
- status: z70.number(),
104865
- data: z70.record(z70.string(), z70.unknown())
105387
+ var outputSchema69 = z71.discriminatedUnion("success", [
105388
+ z71.object({
105389
+ success: z71.literal(true),
105390
+ status: z71.number(),
105391
+ data: z71.record(z71.string(), z71.unknown())
104866
105392
  }),
104867
- z70.object({
104868
- success: z70.literal(false),
104869
- error: z70.string()
105393
+ z71.object({
105394
+ success: z71.literal(false),
105395
+ error: z71.string()
104870
105396
  })
104871
105397
  ]);
104872
105398
  var requestTool40 = new ConnectorTool({
@@ -104876,8 +105402,8 @@ Authentication is handled automatically via OAuth proxy.
104876
105402
  The Intercom-Version header (2.11) is set automatically.
104877
105403
  Use this tool for all Intercom API interactions: querying contacts, conversations, companies, articles, tags, and segments.
104878
105404
  Search endpoints (contacts/search, conversations/search) use POST with a query object in the body.`,
104879
- inputSchema: inputSchema68,
104880
- outputSchema: outputSchema68,
105405
+ inputSchema: inputSchema69,
105406
+ outputSchema: outputSchema69,
104881
105407
  async execute({ connectionId, method, path: path5, queryParams, body }, connections, config) {
104882
105408
  const connection = connections.find((c6) => c6.id === connectionId);
104883
105409
  if (!connection) {
@@ -104890,7 +105416,7 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
104890
105416
  `[connector-request] intercom-oauth/${connection.name}: ${method} ${path5}`
104891
105417
  );
104892
105418
  try {
104893
- let url = `${BASE_URL33}${path5.startsWith("/") ? "" : "/"}${path5}`;
105419
+ let url = `${BASE_URL34}${path5.startsWith("/") ? "" : "/"}${path5}`;
104894
105420
  if (queryParams) {
104895
105421
  const searchParams = new URLSearchParams(queryParams);
104896
105422
  const separator = url.includes("?") ? "&" : "?";
@@ -104899,7 +105425,7 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
104899
105425
  const token = await getProxyToken29(config.oauthProxy);
104900
105426
  const proxyUrl = `https://${config.oauthProxy.sandboxId}.${config.oauthProxy.previewBaseDomain}/_sqcore/connections/${connectionId}/request`;
104901
105427
  const controller = new AbortController();
104902
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS53);
105428
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS54);
104903
105429
  try {
104904
105430
  const response = await fetch(proxyUrl, {
104905
105431
  method: "POST",
@@ -104969,18 +105495,19 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
104969
105495
  });
104970
105496
 
104971
105497
  // ../connectors/src/connectors/intercom-oauth/parameters.ts
104972
- var parameters56 = {};
105498
+ var parameters57 = {};
104973
105499
 
104974
105500
  // ../connectors/src/connectors/intercom-oauth/index.ts
104975
- var tools56 = { request: requestTool40 };
105501
+ var tools57 = { request: requestTool40 };
104976
105502
  var intercomOauthConnector = new ConnectorPlugin({
104977
105503
  slug: "intercom",
104978
105504
  authType: AUTH_TYPES.OAUTH,
104979
105505
  name: "Intercom",
104980
105506
  description: "Connect to Intercom for contacts, conversations, companies, and customer engagement data using OAuth.",
104981
105507
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/sb2cRMGClpId0LKiSqsok/ae90a0849f21ffe3faf73e04a5676b45/intercom.svg",
104982
- parameters: parameters56,
105508
+ parameters: parameters57,
104983
105509
  releaseFlag: { dev1: true, dev2: false, prod: false },
105510
+ categories: ["crm"],
104984
105511
  onboarding: intercomOauthOnboarding,
104985
105512
  proxyPolicy: {
104986
105513
  allowlist: [
@@ -105108,7 +105635,7 @@ const res = await intercom.request("/contacts?per_page=10");
105108
105635
  const data = await res.json();
105109
105636
  \`\`\``
105110
105637
  },
105111
- tools: tools56,
105638
+ tools: tools57,
105112
105639
  async checkConnection(_params, config) {
105113
105640
  const { proxyFetch } = config;
105114
105641
  try {
@@ -105153,7 +105680,7 @@ NOTE: The Query API endpoints (insights, funnels, retention) require a bookmark_
105153
105680
  });
105154
105681
 
105155
105682
  // ../connectors/src/connectors/mixpanel/parameters.ts
105156
- var parameters57 = {
105683
+ var parameters58 = {
105157
105684
  serviceAccountUsername: new ParameterDefinition({
105158
105685
  slug: "service-account-username",
105159
105686
  name: "Service Account Username",
@@ -105193,35 +105720,35 @@ var parameters57 = {
105193
105720
  };
105194
105721
 
105195
105722
  // ../connectors/src/connectors/mixpanel/tools/request.ts
105196
- import { z as z71 } from "zod";
105197
- var REQUEST_TIMEOUT_MS54 = 6e4;
105198
- var inputSchema69 = z71.object({
105199
- toolUseIntent: z71.string().optional().describe(
105723
+ import { z as z72 } from "zod";
105724
+ var REQUEST_TIMEOUT_MS55 = 6e4;
105725
+ var inputSchema70 = z72.object({
105726
+ toolUseIntent: z72.string().optional().describe(
105200
105727
  "Brief description of what you intend to accomplish with this tool call"
105201
105728
  ),
105202
- connectionId: z71.string().describe("ID of the Mixpanel connection to use"),
105203
- method: z71.enum(["GET", "POST"]).describe(
105729
+ connectionId: z72.string().describe("ID of the Mixpanel connection to use"),
105730
+ method: z72.enum(["GET", "POST"]).describe(
105204
105731
  "HTTP method. GET for most Query API and Export endpoints. POST for Engage (profile query) endpoint."
105205
105732
  ),
105206
- url: z71.string().describe(
105733
+ url: z72.string().describe(
105207
105734
  "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."
105208
105735
  ),
105209
- body: z71.string().optional().describe(
105736
+ body: z72.string().optional().describe(
105210
105737
  "Request body for POST requests. Use application/x-www-form-urlencoded format for the Engage endpoint, or JSON string for other POST endpoints."
105211
105738
  ),
105212
- contentType: z71.enum(["application/json", "application/x-www-form-urlencoded"]).optional().describe(
105739
+ contentType: z72.enum(["application/json", "application/x-www-form-urlencoded"]).optional().describe(
105213
105740
  "Content-Type header. Defaults to application/json. Use application/x-www-form-urlencoded for the Engage endpoint."
105214
105741
  )
105215
105742
  });
105216
- var outputSchema69 = z71.discriminatedUnion("success", [
105217
- z71.object({
105218
- success: z71.literal(true),
105219
- status: z71.number(),
105220
- data: z71.unknown()
105743
+ var outputSchema70 = z72.discriminatedUnion("success", [
105744
+ z72.object({
105745
+ success: z72.literal(true),
105746
+ status: z72.number(),
105747
+ data: z72.unknown()
105221
105748
  }),
105222
- z71.object({
105223
- success: z71.literal(false),
105224
- error: z71.string()
105749
+ z72.object({
105750
+ success: z72.literal(false),
105751
+ error: z72.string()
105225
105752
  })
105226
105753
  ]);
105227
105754
  var requestTool41 = new ConnectorTool({
@@ -105242,8 +105769,8 @@ Key endpoints:
105242
105769
  - GET {exportBase}?from_date=YYYY-MM-DD&to_date=YYYY-MM-DD \u2014 Export raw events (JSONL)
105243
105770
 
105244
105771
  Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
105245
- inputSchema: inputSchema69,
105246
- outputSchema: outputSchema69,
105772
+ inputSchema: inputSchema70,
105773
+ outputSchema: outputSchema70,
105247
105774
  async execute({ connectionId, method, url, body, contentType }, connections) {
105248
105775
  const connection = connections.find((c6) => c6.id === connectionId);
105249
105776
  if (!connection) {
@@ -105256,9 +105783,9 @@ Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
105256
105783
  `[connector-request] mixpanel/${connection.name}: ${method} ${url}`
105257
105784
  );
105258
105785
  try {
105259
- const username = parameters57.serviceAccountUsername.getValue(connection);
105260
- const secret = parameters57.serviceAccountSecret.getValue(connection);
105261
- const projectId = parameters57.projectId.getValue(connection);
105786
+ const username = parameters58.serviceAccountUsername.getValue(connection);
105787
+ const secret = parameters58.serviceAccountSecret.getValue(connection);
105788
+ const projectId = parameters58.projectId.getValue(connection);
105262
105789
  const authToken = btoa(`${username}:${secret}`);
105263
105790
  let finalUrl = url;
105264
105791
  const urlObj = new URL(url);
@@ -105267,7 +105794,7 @@ Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
105267
105794
  finalUrl = urlObj.toString();
105268
105795
  }
105269
105796
  const controller = new AbortController();
105270
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS54);
105797
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS55);
105271
105798
  try {
105272
105799
  const headers = {
105273
105800
  Authorization: `Basic ${authToken}`,
@@ -105318,15 +105845,16 @@ Rate limit: 60 queries/hour, 5 concurrent queries for Query API.`,
105318
105845
  });
105319
105846
 
105320
105847
  // ../connectors/src/connectors/mixpanel/index.ts
105321
- var tools57 = { request: requestTool41 };
105848
+ var tools58 = { request: requestTool41 };
105322
105849
  var mixpanelConnector = new ConnectorPlugin({
105323
105850
  slug: "mixpanel",
105324
105851
  authType: AUTH_TYPES.API_KEY,
105325
105852
  name: "Mixpanel",
105326
105853
  description: "Connect to Mixpanel for product analytics, event tracking, and user behavior analysis.",
105327
105854
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7ykz0vNRjMqvTVrxS8wsj1/b2cd795be5b373877dee77cc6147c758/images__3_.png",
105328
- parameters: parameters57,
105855
+ parameters: parameters58,
105329
105856
  releaseFlag: { dev1: true, dev2: true, prod: true },
105857
+ categories: ["marketing"],
105330
105858
  onboarding: mixpanelOnboarding,
105331
105859
  systemPrompt: {
105332
105860
  en: `### Tools
@@ -105448,7 +105976,7 @@ export default async function handler(c: Context) {
105448
105976
 
105449
105977
  \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`
105450
105978
  },
105451
- tools: tools57
105979
+ tools: tools58
105452
105980
  });
105453
105981
 
105454
105982
  // ../connectors/src/connectors/grafana/setup.ts
@@ -105464,7 +105992,7 @@ var grafanaOnboarding = new ConnectorOnboarding({
105464
105992
  });
105465
105993
 
105466
105994
  // ../connectors/src/connectors/grafana/parameters.ts
105467
- var parameters58 = {
105995
+ var parameters59 = {
105468
105996
  url: new ParameterDefinition({
105469
105997
  slug: "url",
105470
105998
  name: "Grafana URL",
@@ -105486,30 +106014,30 @@ var parameters58 = {
105486
106014
  };
105487
106015
 
105488
106016
  // ../connectors/src/connectors/grafana/tools/request.ts
105489
- import { z as z72 } from "zod";
105490
- var REQUEST_TIMEOUT_MS55 = 6e4;
105491
- var inputSchema70 = z72.object({
105492
- toolUseIntent: z72.string().optional().describe(
106017
+ import { z as z73 } from "zod";
106018
+ var REQUEST_TIMEOUT_MS56 = 6e4;
106019
+ var inputSchema71 = z73.object({
106020
+ toolUseIntent: z73.string().optional().describe(
105493
106021
  "Brief description of what you intend to accomplish with this tool call"
105494
106022
  ),
105495
- connectionId: z72.string().describe("ID of the Grafana connection to use"),
105496
- method: z72.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).describe(
106023
+ connectionId: z73.string().describe("ID of the Grafana connection to use"),
106024
+ method: z73.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).describe(
105497
106025
  "HTTP method. GET for reading resources (datasources, dashboards, alerts). POST for queries and creating resources. PUT/PATCH for updates. DELETE for removal."
105498
106026
  ),
105499
- path: z72.string().describe(
106027
+ path: z73.string().describe(
105500
106028
  "API path relative to the Grafana base URL (e.g., '/api/datasources', '/api/search', '/api/ds/query'). Must start with '/'."
105501
106029
  ),
105502
- body: z72.record(z72.string(), z72.unknown()).optional().describe("Request body (JSON). Required for POST/PUT/PATCH requests.")
106030
+ body: z73.record(z73.string(), z73.unknown()).optional().describe("Request body (JSON). Required for POST/PUT/PATCH requests.")
105503
106031
  });
105504
- var outputSchema70 = z72.discriminatedUnion("success", [
105505
- z72.object({
105506
- success: z72.literal(true),
105507
- status: z72.number(),
105508
- data: z72.unknown()
106032
+ var outputSchema71 = z73.discriminatedUnion("success", [
106033
+ z73.object({
106034
+ success: z73.literal(true),
106035
+ status: z73.number(),
106036
+ data: z73.unknown()
105509
106037
  }),
105510
- z72.object({
105511
- success: z72.literal(false),
105512
- error: z72.string()
106038
+ z73.object({
106039
+ success: z73.literal(false),
106040
+ error: z73.string()
105513
106041
  })
105514
106042
  ]);
105515
106043
  var requestTool42 = new ConnectorTool({
@@ -105518,8 +106046,8 @@ var requestTool42 = new ConnectorTool({
105518
106046
  Authentication is handled automatically using the configured API Key or Service Account Token via Bearer token.
105519
106047
  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).
105520
106048
  The path must start with '/' and is appended to the configured Grafana instance URL.`,
105521
- inputSchema: inputSchema70,
105522
- outputSchema: outputSchema70,
106049
+ inputSchema: inputSchema71,
106050
+ outputSchema: outputSchema71,
105523
106051
  async execute({ connectionId, method, path: path5, body }, connections) {
105524
106052
  const connection = connections.find((c6) => c6.id === connectionId);
105525
106053
  if (!connection) {
@@ -105532,13 +106060,13 @@ The path must start with '/' and is appended to the configured Grafana instance
105532
106060
  `[connector-request] grafana/${connection.name}: ${method} ${path5}`
105533
106061
  );
105534
106062
  try {
105535
- const baseUrl = parameters58.url.getValue(connection).replace(/\/+$/, "");
105536
- const apiKey = parameters58.apiKey.getValue(connection);
106063
+ const baseUrl = parameters59.url.getValue(connection).replace(/\/+$/, "");
106064
+ const apiKey = parameters59.apiKey.getValue(connection);
105537
106065
  const url = `${baseUrl}${path5}`;
105538
106066
  const controller = new AbortController();
105539
106067
  const timeout = setTimeout(
105540
106068
  () => controller.abort(),
105541
- REQUEST_TIMEOUT_MS55
106069
+ REQUEST_TIMEOUT_MS56
105542
106070
  );
105543
106071
  try {
105544
106072
  const response = await fetch(url, {
@@ -105568,15 +106096,16 @@ The path must start with '/' and is appended to the configured Grafana instance
105568
106096
  });
105569
106097
 
105570
106098
  // ../connectors/src/connectors/grafana/index.ts
105571
- var tools58 = { request: requestTool42 };
106099
+ var tools59 = { request: requestTool42 };
105572
106100
  var grafanaConnector = new ConnectorPlugin({
105573
106101
  slug: "grafana",
105574
106102
  authType: AUTH_TYPES.API_KEY,
105575
106103
  name: "Grafana",
105576
106104
  description: "Connect to Grafana for monitoring dashboards, datasource queries, and alerting.",
105577
106105
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3nGaPhV94lXQsHcCtv4mXz/0559d42f83066e8ba79e78410806750c/grafana-icon.webp",
105578
- parameters: parameters58,
106106
+ parameters: parameters59,
105579
106107
  releaseFlag: { dev1: true, dev2: true, prod: true },
106108
+ categories: ["observability"],
105580
106109
  onboarding: grafanaOnboarding,
105581
106110
  systemPrompt: {
105582
106111
  en: `### Tools
@@ -105696,7 +106225,7 @@ export default async function handler(c: Context) {
105696
106225
  - \`GET /api/org\` \u2014 \u73FE\u5728\u306E\u7D44\u7E54\u3092\u53D6\u5F97
105697
106226
  - \`GET /api/health\` \u2014 \u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF`
105698
106227
  },
105699
- tools: tools58
106228
+ tools: tools59
105700
106229
  });
105701
106230
 
105702
106231
  // ../connectors/src/connectors/backlog/setup.ts
@@ -105714,7 +106243,7 @@ var backlogOnboarding = new ConnectorOnboarding({
105714
106243
  });
105715
106244
 
105716
106245
  // ../connectors/src/connectors/backlog/parameters.ts
105717
- var parameters59 = {
106246
+ var parameters60 = {
105718
106247
  spaceUrl: new ParameterDefinition({
105719
106248
  slug: "space-url",
105720
106249
  name: "Backlog Space URL",
@@ -105736,24 +106265,24 @@ var parameters59 = {
105736
106265
  };
105737
106266
 
105738
106267
  // ../connectors/src/connectors/backlog/tools/request.ts
105739
- import { z as z73 } from "zod";
105740
- var REQUEST_TIMEOUT_MS56 = 6e4;
105741
- var inputSchema71 = z73.object({
105742
- toolUseIntent: z73.string().optional().describe("Brief description of what you intend to accomplish with this tool call"),
105743
- connectionId: z73.string().describe("ID of the Backlog connection to use"),
105744
- 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."),
105745
- 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."),
105746
- 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).")
106268
+ import { z as z74 } from "zod";
106269
+ var REQUEST_TIMEOUT_MS57 = 6e4;
106270
+ var inputSchema72 = z74.object({
106271
+ toolUseIntent: z74.string().optional().describe("Brief description of what you intend to accomplish with this tool call"),
106272
+ connectionId: z74.string().describe("ID of the Backlog connection to use"),
106273
+ 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."),
106274
+ 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."),
106275
+ 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).")
105747
106276
  });
105748
- var outputSchema71 = z73.discriminatedUnion("success", [
105749
- z73.object({
105750
- success: z73.literal(true),
105751
- status: z73.number(),
105752
- data: z73.union([z73.record(z73.string(), z73.unknown()), z73.array(z73.unknown())])
106277
+ var outputSchema72 = z74.discriminatedUnion("success", [
106278
+ z74.object({
106279
+ success: z74.literal(true),
106280
+ status: z74.number(),
106281
+ data: z74.union([z74.record(z74.string(), z74.unknown()), z74.array(z74.unknown())])
105753
106282
  }),
105754
- z73.object({
105755
- success: z73.literal(false),
105756
- error: z73.string()
106283
+ z74.object({
106284
+ success: z74.literal(false),
106285
+ error: z74.string()
105757
106286
  })
105758
106287
  ]);
105759
106288
  var requestTool43 = new ConnectorTool({
@@ -105763,8 +106292,8 @@ Authentication is handled automatically by appending the apiKey query parameter
105763
106292
  Use this tool for all Backlog operations: listing projects, searching and creating issues, managing wikis, retrieving users, and more.
105764
106293
  The base URL and API key are configured per connection \u2014 only specify the API path relative to /api/v2/.
105765
106294
  Do NOT include the apiKey parameter yourself; it is injected automatically.`,
105766
- inputSchema: inputSchema71,
105767
- outputSchema: outputSchema71,
106295
+ inputSchema: inputSchema72,
106296
+ outputSchema: outputSchema72,
105768
106297
  async execute({ connectionId, method, path: path5, body }, connections) {
105769
106298
  const connection = connections.find((c6) => c6.id === connectionId);
105770
106299
  if (!connection) {
@@ -105772,12 +106301,12 @@ Do NOT include the apiKey parameter yourself; it is injected automatically.`,
105772
106301
  }
105773
106302
  console.log(`[connector-request] backlog-api-key/${connection.name}: ${method} ${path5}`);
105774
106303
  try {
105775
- const spaceUrl = parameters59.spaceUrl.getValue(connection);
105776
- const apiKey = parameters59.apiKey.getValue(connection);
106304
+ const spaceUrl = parameters60.spaceUrl.getValue(connection);
106305
+ const apiKey = parameters60.apiKey.getValue(connection);
105777
106306
  const separator = path5.includes("?") ? "&" : "?";
105778
106307
  const url = `${spaceUrl.replace(/\/+$/, "")}/api/v2/${path5}${separator}apiKey=${apiKey}`;
105779
106308
  const controller = new AbortController();
105780
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS56);
106309
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS57);
105781
106310
  try {
105782
106311
  const headers = {
105783
106312
  Accept: "application/json"
@@ -105813,15 +106342,16 @@ Do NOT include the apiKey parameter yourself; it is injected automatically.`,
105813
106342
  });
105814
106343
 
105815
106344
  // ../connectors/src/connectors/backlog/index.ts
105816
- var tools59 = { request: requestTool43 };
106345
+ var tools60 = { request: requestTool43 };
105817
106346
  var backlogConnector = new ConnectorPlugin({
105818
106347
  slug: "backlog",
105819
106348
  authType: AUTH_TYPES.API_KEY,
105820
106349
  name: "Backlog",
105821
106350
  description: "Connect to Nulab Backlog for project management, issue tracking, and wiki data retrieval using API key authentication.",
105822
106351
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6KcVBGf3mUHnuCOQgQMvtT/e8558c7990e40e3be46948e9476190fb/backlog-favicon.svg",
105823
- parameters: parameters59,
106352
+ parameters: parameters60,
105824
106353
  releaseFlag: { dev1: true, dev2: true, prod: true },
106354
+ categories: ["productivity"],
105825
106355
  onboarding: backlogOnboarding,
105826
106356
  systemPrompt: {
105827
106357
  en: `### Tools
@@ -105969,7 +106499,7 @@ await backlog.request("/api/v2/issues", {
105969
106499
  - sort: "created", "updated", "issueType", "category", "priority" \u7B49
105970
106500
  - order: "asc" \u307E\u305F\u306F "desc"`
105971
106501
  },
105972
- tools: tools59
106502
+ tools: tools60
105973
106503
  });
105974
106504
 
105975
106505
  // ../connectors/src/connectors/gamma/setup.ts
@@ -105985,7 +106515,7 @@ var gammaOnboarding = new ConnectorOnboarding({
105985
106515
  });
105986
106516
 
105987
106517
  // ../connectors/src/connectors/gamma/parameters.ts
105988
- var parameters60 = {
106518
+ var parameters61 = {
105989
106519
  apiKey: new ParameterDefinition({
105990
106520
  slug: "api-key",
105991
106521
  name: "Gamma API Key",
@@ -105998,29 +106528,29 @@ var parameters60 = {
105998
106528
  };
105999
106529
 
106000
106530
  // ../connectors/src/connectors/gamma/tools/request.ts
106001
- import { z as z74 } from "zod";
106002
- var BASE_URL34 = "https://public-api.gamma.app/v1.0";
106003
- var REQUEST_TIMEOUT_MS57 = 6e4;
106004
- var inputSchema72 = z74.object({
106005
- toolUseIntent: z74.string().optional().describe(
106531
+ import { z as z75 } from "zod";
106532
+ var BASE_URL35 = "https://public-api.gamma.app/v1.0";
106533
+ var REQUEST_TIMEOUT_MS58 = 6e4;
106534
+ var inputSchema73 = z75.object({
106535
+ toolUseIntent: z75.string().optional().describe(
106006
106536
  "Brief description of what you intend to accomplish with this tool call"
106007
106537
  ),
106008
- connectionId: z74.string().describe("ID of the Gamma connection to use"),
106009
- method: z74.enum(["GET", "POST"]).describe("HTTP method. GET for listing resources, POST for creating."),
106010
- path: z74.string().describe(
106538
+ connectionId: z75.string().describe("ID of the Gamma connection to use"),
106539
+ method: z75.enum(["GET", "POST"]).describe("HTTP method. GET for listing resources, POST for creating."),
106540
+ path: z75.string().describe(
106011
106541
  "API path (e.g., '/themes', '/folders', '/generations', '/generations/{generationId}')"
106012
106542
  ),
106013
- body: z74.record(z74.string(), z74.unknown()).optional().describe("Request body (JSON) for POST requests")
106543
+ body: z75.record(z75.string(), z75.unknown()).optional().describe("Request body (JSON) for POST requests")
106014
106544
  });
106015
- var outputSchema72 = z74.discriminatedUnion("success", [
106016
- z74.object({
106017
- success: z74.literal(true),
106018
- status: z74.number(),
106019
- data: z74.unknown()
106545
+ var outputSchema73 = z75.discriminatedUnion("success", [
106546
+ z75.object({
106547
+ success: z75.literal(true),
106548
+ status: z75.number(),
106549
+ data: z75.unknown()
106020
106550
  }),
106021
- z74.object({
106022
- success: z74.literal(false),
106023
- error: z74.string()
106551
+ z75.object({
106552
+ success: z75.literal(false),
106553
+ error: z75.string()
106024
106554
  })
106025
106555
  ]);
106026
106556
  var requestTool44 = new ConnectorTool({
@@ -106029,8 +106559,8 @@ var requestTool44 = new ConnectorTool({
106029
106559
  Authentication is handled automatically using the API Key (X-API-KEY header).
106030
106560
  Use this tool for listing themes, listing folders, checking generation status, and other read operations.
106031
106561
  For creating presentations/documents, prefer the gamma_generate tool instead.`,
106032
- inputSchema: inputSchema72,
106033
- outputSchema: outputSchema72,
106562
+ inputSchema: inputSchema73,
106563
+ outputSchema: outputSchema73,
106034
106564
  async execute({ connectionId, method, path: path5, body }, connections) {
106035
106565
  const connection = connections.find((c6) => c6.id === connectionId);
106036
106566
  if (!connection) {
@@ -106043,10 +106573,10 @@ For creating presentations/documents, prefer the gamma_generate tool instead.`,
106043
106573
  `[connector-request] gamma/${connection.name}: ${method} ${path5}`
106044
106574
  );
106045
106575
  try {
106046
- const apiKey = parameters60.apiKey.getValue(connection);
106047
- const url = `${BASE_URL34}${path5}`;
106576
+ const apiKey = parameters61.apiKey.getValue(connection);
106577
+ const url = `${BASE_URL35}${path5}`;
106048
106578
  const controller = new AbortController();
106049
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS57);
106579
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS58);
106050
106580
  try {
106051
106581
  const response = await fetch(url, {
106052
106582
  method,
@@ -106075,35 +106605,35 @@ For creating presentations/documents, prefer the gamma_generate tool instead.`,
106075
106605
  });
106076
106606
 
106077
106607
  // ../connectors/src/connectors/gamma/tools/generate.ts
106078
- import { z as z75 } from "zod";
106079
- var BASE_URL35 = "https://public-api.gamma.app/v1.0";
106608
+ import { z as z76 } from "zod";
106609
+ var BASE_URL36 = "https://public-api.gamma.app/v1.0";
106080
106610
  var POLL_INTERVAL_MS3 = 5e3;
106081
106611
  var MAX_POLL_DURATION_MS = 3e5;
106082
- var inputSchema73 = z75.object({
106083
- toolUseIntent: z75.string().optional().describe(
106612
+ var inputSchema74 = z76.object({
106613
+ toolUseIntent: z76.string().optional().describe(
106084
106614
  "Brief description of what you intend to accomplish with this tool call"
106085
106615
  ),
106086
- connectionId: z75.string().describe("ID of the Gamma connection to use"),
106087
- inputText: z75.string().describe(
106616
+ connectionId: z76.string().describe("ID of the Gamma connection to use"),
106617
+ inputText: z76.string().describe(
106088
106618
  "Content for the generation. Can include text and image URLs. Max ~400,000 characters."
106089
106619
  ),
106090
- textMode: z75.enum(["generate", "condense", "preserve"]).describe(
106620
+ textMode: z76.enum(["generate", "condense", "preserve"]).describe(
106091
106621
  "How inputText is modified: 'generate' creates new content from the topic, 'condense' shortens existing text, 'preserve' keeps text as-is."
106092
106622
  ),
106093
- format: z75.enum(["presentation", "document", "webpage", "social"]).optional().describe("Type of artifact to create. Defaults to 'presentation'."),
106094
- numCards: z75.number().int().min(1).max(75).optional().describe("Number of cards/slides. Defaults to 10."),
106095
- themeId: z75.string().optional().describe(
106623
+ format: z76.enum(["presentation", "document", "webpage", "social"]).optional().describe("Type of artifact to create. Defaults to 'presentation'."),
106624
+ numCards: z76.number().int().min(1).max(75).optional().describe("Number of cards/slides. Defaults to 10."),
106625
+ themeId: z76.string().optional().describe(
106096
106626
  "Theme ID for look and feel. Use gamma_request GET /themes to list available themes."
106097
106627
  ),
106098
- tone: z75.string().optional().describe(
106628
+ tone: z76.string().optional().describe(
106099
106629
  "Tone/voice of the output (e.g., 'professional', 'casual', 'academic'). Max 500 chars."
106100
106630
  ),
106101
- audience: z75.string().optional().describe(
106631
+ audience: z76.string().optional().describe(
106102
106632
  "Target audience description (e.g., 'marketing executives'). Max 500 chars."
106103
106633
  ),
106104
- language: z75.string().optional().describe("Output language code (e.g., 'en', 'ja'). Defaults to 'en'."),
106105
- textAmount: z75.enum(["brief", "medium", "detailed", "extensive"]).optional().describe("Text volume per card. Defaults to 'medium'."),
106106
- imageSource: z75.enum([
106634
+ language: z76.string().optional().describe("Output language code (e.g., 'en', 'ja'). Defaults to 'en'."),
106635
+ textAmount: z76.enum(["brief", "medium", "detailed", "extensive"]).optional().describe("Text volume per card. Defaults to 'medium'."),
106636
+ imageSource: z76.enum([
106107
106637
  "aiGenerated",
106108
106638
  "pictographic",
106109
106639
  "pexels",
@@ -106115,26 +106645,26 @@ var inputSchema73 = z75.object({
106115
106645
  "placeholder",
106116
106646
  "noImages"
106117
106647
  ]).optional().describe("Image source. Defaults to 'aiGenerated'."),
106118
- additionalInstructions: z75.string().optional().describe(
106648
+ additionalInstructions: z76.string().optional().describe(
106119
106649
  "Additional specifications for content, layout, and aesthetics. Max 5000 chars."
106120
106650
  ),
106121
- exportAs: z75.enum(["pdf", "pptx", "png"]).optional().describe("Export file format. If omitted, no export file is generated.")
106651
+ exportAs: z76.enum(["pdf", "pptx", "png"]).optional().describe("Export file format. If omitted, no export file is generated.")
106122
106652
  });
106123
- var outputSchema73 = z75.discriminatedUnion("success", [
106124
- z75.object({
106125
- success: z75.literal(true),
106126
- generationId: z75.string(),
106127
- gammaId: z75.string(),
106128
- gammaUrl: z75.string(),
106129
- exportUrl: z75.string().optional(),
106130
- credits: z75.object({
106131
- deducted: z75.number(),
106132
- remaining: z75.number()
106653
+ var outputSchema74 = z76.discriminatedUnion("success", [
106654
+ z76.object({
106655
+ success: z76.literal(true),
106656
+ generationId: z76.string(),
106657
+ gammaId: z76.string(),
106658
+ gammaUrl: z76.string(),
106659
+ exportUrl: z76.string().optional(),
106660
+ credits: z76.object({
106661
+ deducted: z76.number(),
106662
+ remaining: z76.number()
106133
106663
  }).optional()
106134
106664
  }),
106135
- z75.object({
106136
- success: z75.literal(false),
106137
- error: z75.string()
106665
+ z76.object({
106666
+ success: z76.literal(false),
106667
+ error: z76.string()
106138
106668
  })
106139
106669
  ]);
106140
106670
  var generateTool = new ConnectorTool({
@@ -106143,8 +106673,8 @@ var generateTool = new ConnectorTool({
106143
106673
  This tool creates the generation, then automatically polls until completion and returns the result URL.
106144
106674
  Use gamma_request GET /themes first if you want to pick a specific theme.
106145
106675
  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.`,
106146
- inputSchema: inputSchema73,
106147
- outputSchema: outputSchema73,
106676
+ inputSchema: inputSchema74,
106677
+ outputSchema: outputSchema74,
106148
106678
  async execute({
106149
106679
  connectionId,
106150
106680
  inputText,
@@ -106171,7 +106701,7 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
106171
106701
  `[connector-generate] gamma/${connection.name}: creating ${format2 ?? "presentation"}`
106172
106702
  );
106173
106703
  try {
106174
- const apiKey = parameters60.apiKey.getValue(connection);
106704
+ const apiKey = parameters61.apiKey.getValue(connection);
106175
106705
  const headers = {
106176
106706
  "X-API-KEY": apiKey,
106177
106707
  "Content-Type": "application/json"
@@ -106193,7 +106723,7 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
106193
106723
  if (textAmount) textOptions.amount = textAmount;
106194
106724
  if (Object.keys(textOptions).length > 0) body.textOptions = textOptions;
106195
106725
  if (imageSource) body.imageOptions = { source: imageSource };
106196
- const createRes = await fetch(`${BASE_URL35}/generations`, {
106726
+ const createRes = await fetch(`${BASE_URL36}/generations`, {
106197
106727
  method: "POST",
106198
106728
  headers,
106199
106729
  body: JSON.stringify(body)
@@ -106213,7 +106743,7 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
106213
106743
  const deadline = Date.now() + MAX_POLL_DURATION_MS;
106214
106744
  while (Date.now() < deadline) {
106215
106745
  await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS3));
106216
- const pollRes = await fetch(`${BASE_URL35}/generations/${generationId}`, {
106746
+ const pollRes = await fetch(`${BASE_URL36}/generations/${generationId}`, {
106217
106747
  method: "GET",
106218
106748
  headers
106219
106749
  });
@@ -106251,15 +106781,16 @@ Gamma does NOT support image uploads. To visualize data, embed raw numbers direc
106251
106781
  });
106252
106782
 
106253
106783
  // ../connectors/src/connectors/gamma/index.ts
106254
- var tools60 = { request: requestTool44, generate: generateTool };
106784
+ var tools61 = { request: requestTool44, generate: generateTool };
106255
106785
  var gammaConnector = new ConnectorPlugin({
106256
106786
  slug: "gamma",
106257
106787
  authType: AUTH_TYPES.API_KEY,
106258
106788
  name: "Gamma",
106259
106789
  description: "Connect to Gamma for AI-powered presentation, document, webpage, and social post generation.",
106260
106790
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/KoMGPpPcgtB9oDYe1OBjS/1ba7eb061c4497106bf6d249866dc471/gamma.svg",
106261
- parameters: parameters60,
106791
+ parameters: parameters61,
106262
106792
  releaseFlag: { dev1: true, dev2: true, prod: true },
106793
+ categories: ["productivity"],
106263
106794
  onboarding: gammaOnboarding,
106264
106795
  systemPrompt: {
106265
106796
  en: `### Tools
@@ -106411,7 +106942,7 @@ export default async function handler(c: Context) {
106411
106942
  #### \u30C7\u30FC\u30BF\u306E\u53EF\u8996\u5316
106412
106943
  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`
106413
106944
  },
106414
- tools: tools60
106945
+ tools: tools61
106415
106946
  });
106416
106947
 
106417
106948
  // ../connectors/src/connectors/sentry/setup.ts
@@ -106427,7 +106958,7 @@ var sentryOnboarding = new ConnectorOnboarding({
106427
106958
  });
106428
106959
 
106429
106960
  // ../connectors/src/connectors/sentry/parameters.ts
106430
- var parameters61 = {
106961
+ var parameters62 = {
106431
106962
  organizationSlug: new ParameterDefinition({
106432
106963
  slug: "organization-slug",
106433
106964
  name: "Sentry Organization Slug",
@@ -106449,29 +106980,29 @@ var parameters61 = {
106449
106980
  };
106450
106981
 
106451
106982
  // ../connectors/src/connectors/sentry/tools/request.ts
106452
- import { z as z76 } from "zod";
106453
- var BASE_URL36 = "https://sentry.io/api/0";
106454
- var REQUEST_TIMEOUT_MS58 = 6e4;
106455
- var inputSchema74 = z76.object({
106456
- toolUseIntent: z76.string().optional().describe(
106983
+ import { z as z77 } from "zod";
106984
+ var BASE_URL37 = "https://sentry.io/api/0";
106985
+ var REQUEST_TIMEOUT_MS59 = 6e4;
106986
+ var inputSchema75 = z77.object({
106987
+ toolUseIntent: z77.string().optional().describe(
106457
106988
  "Brief description of what you intend to accomplish with this tool call"
106458
106989
  ),
106459
- connectionId: z76.string().describe("ID of the Sentry connection to use"),
106460
- method: z76.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
106461
- path: z76.string().describe(
106990
+ connectionId: z77.string().describe("ID of the Sentry connection to use"),
106991
+ method: z77.enum(["GET", "POST", "PUT", "DELETE"]).describe("HTTP method"),
106992
+ path: z77.string().describe(
106462
106993
  "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."
106463
106994
  ),
106464
- body: z76.record(z76.string(), z76.unknown()).optional().describe("JSON request body for POST/PUT requests")
106995
+ body: z77.record(z77.string(), z77.unknown()).optional().describe("JSON request body for POST/PUT requests")
106465
106996
  });
106466
- var outputSchema74 = z76.discriminatedUnion("success", [
106467
- z76.object({
106468
- success: z76.literal(true),
106469
- status: z76.number(),
106470
- data: z76.unknown()
106997
+ var outputSchema75 = z77.discriminatedUnion("success", [
106998
+ z77.object({
106999
+ success: z77.literal(true),
107000
+ status: z77.number(),
107001
+ data: z77.unknown()
106471
107002
  }),
106472
- z76.object({
106473
- success: z76.literal(false),
106474
- error: z76.string()
107003
+ z77.object({
107004
+ success: z77.literal(false),
107005
+ error: z77.string()
106475
107006
  })
106476
107007
  ]);
106477
107008
  var requestTool45 = new ConnectorTool({
@@ -106480,8 +107011,8 @@ var requestTool45 = new ConnectorTool({
106480
107011
  Supports GET, POST, PUT, and DELETE methods.
106481
107012
  Authentication is handled automatically via Bearer token.
106482
107013
  {organizationSlug} in the path is automatically replaced with the configured organization slug.`,
106483
- inputSchema: inputSchema74,
106484
- outputSchema: outputSchema74,
107014
+ inputSchema: inputSchema75,
107015
+ outputSchema: outputSchema75,
106485
107016
  async execute({ connectionId, method, path: path5, body }, connections) {
106486
107017
  const connection = connections.find((c6) => c6.id === connectionId);
106487
107018
  if (!connection) {
@@ -106494,15 +107025,15 @@ Authentication is handled automatically via Bearer token.
106494
107025
  `[connector-request] sentry/${connection.name}: ${method} ${path5}`
106495
107026
  );
106496
107027
  try {
106497
- const authToken = parameters61.authToken.getValue(connection);
106498
- const organizationSlug = parameters61.organizationSlug.getValue(connection);
107028
+ const authToken = parameters62.authToken.getValue(connection);
107029
+ const organizationSlug = parameters62.organizationSlug.getValue(connection);
106499
107030
  const resolvedPath = path5.replace(
106500
107031
  /\{organizationSlug\}/g,
106501
107032
  organizationSlug
106502
107033
  );
106503
- const url = `${BASE_URL36}${resolvedPath.startsWith("/") ? "" : "/"}${resolvedPath}`;
107034
+ const url = `${BASE_URL37}${resolvedPath.startsWith("/") ? "" : "/"}${resolvedPath}`;
106504
107035
  const controller = new AbortController();
106505
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS58);
107036
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS59);
106506
107037
  try {
106507
107038
  const response = await fetch(url, {
106508
107039
  method,
@@ -106531,15 +107062,16 @@ Authentication is handled automatically via Bearer token.
106531
107062
  });
106532
107063
 
106533
107064
  // ../connectors/src/connectors/sentry/index.ts
106534
- var tools61 = { request: requestTool45 };
107065
+ var tools62 = { request: requestTool45 };
106535
107066
  var sentryConnector = new ConnectorPlugin({
106536
107067
  slug: "sentry",
106537
107068
  authType: AUTH_TYPES.API_KEY,
106538
107069
  name: "Sentry",
106539
107070
  description: "Connect to Sentry for error tracking and performance monitoring data.",
106540
107071
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4B8ZEGFGjTeMWNnXQb1dAL/ac10f813f02353f5b0cbe64fb5c06d8f/sentry.svg",
106541
- parameters: parameters61,
107072
+ parameters: parameters62,
106542
107073
  releaseFlag: { dev1: true, dev2: true, prod: true },
107074
+ categories: ["observability"],
106543
107075
  onboarding: sentryOnboarding,
106544
107076
  systemPrompt: {
106545
107077
  en: `### Tools
@@ -106707,10 +107239,10 @@ events.forEach(e => console.log(e.dateCreated, e.message));
106707
107239
  await sentry.updateIssue("12345", { status: "resolved" });
106708
107240
  \`\`\``
106709
107241
  },
106710
- tools: tools61,
107242
+ tools: tools62,
106711
107243
  async checkConnection(params) {
106712
- const authToken = params[parameters61.authToken.slug];
106713
- const organizationSlug = params[parameters61.organizationSlug.slug];
107244
+ const authToken = params[parameters62.authToken.slug];
107245
+ const organizationSlug = params[parameters62.organizationSlug.slug];
106714
107246
  if (!authToken || !organizationSlug) {
106715
107247
  return {
106716
107248
  success: false,
@@ -106756,7 +107288,7 @@ var salesforceOnboarding = new ConnectorOnboarding({
106756
107288
  });
106757
107289
 
106758
107290
  // ../connectors/src/connectors/salesforce/parameters.ts
106759
- var parameters62 = {
107291
+ var parameters63 = {
106760
107292
  instanceUrl: new ParameterDefinition({
106761
107293
  slug: "instance-url",
106762
107294
  name: "Instance URL",
@@ -106787,30 +107319,30 @@ var parameters62 = {
106787
107319
  };
106788
107320
 
106789
107321
  // ../connectors/src/connectors/salesforce/tools/request.ts
106790
- import { z as z77 } from "zod";
106791
- var REQUEST_TIMEOUT_MS59 = 6e4;
106792
- var inputSchema75 = z77.object({
106793
- toolUseIntent: z77.string().optional().describe(
107322
+ import { z as z78 } from "zod";
107323
+ var REQUEST_TIMEOUT_MS60 = 6e4;
107324
+ var inputSchema76 = z78.object({
107325
+ toolUseIntent: z78.string().optional().describe(
106794
107326
  "Brief description of what you intend to accomplish with this tool call"
106795
107327
  ),
106796
- connectionId: z77.string().describe("ID of the Salesforce connection to use"),
106797
- method: z77.enum(["GET", "POST", "PATCH", "DELETE"]).describe(
107328
+ connectionId: z78.string().describe("ID of the Salesforce connection to use"),
107329
+ method: z78.enum(["GET", "POST", "PATCH", "DELETE"]).describe(
106798
107330
  "HTTP method. GET for reading resources and SOQL queries, POST for creating, PATCH for updating, DELETE for removing."
106799
107331
  ),
106800
- path: z77.string().describe(
107332
+ path: z78.string().describe(
106801
107333
  "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/'."
106802
107334
  ),
106803
- body: z77.record(z77.string(), z77.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
107335
+ body: z78.record(z78.string(), z78.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
106804
107336
  });
106805
- var outputSchema75 = z77.discriminatedUnion("success", [
106806
- z77.object({
106807
- success: z77.literal(true),
106808
- status: z77.number(),
106809
- data: z77.record(z77.string(), z77.unknown())
107337
+ var outputSchema76 = z78.discriminatedUnion("success", [
107338
+ z78.object({
107339
+ success: z78.literal(true),
107340
+ status: z78.number(),
107341
+ data: z78.record(z78.string(), z78.unknown())
106810
107342
  }),
106811
- z77.object({
106812
- success: z77.literal(false),
106813
- error: z77.string()
107343
+ z78.object({
107344
+ success: z78.literal(false),
107345
+ error: z78.string()
106814
107346
  })
106815
107347
  ]);
106816
107348
  function normalizeInstanceUrl(raw) {
@@ -106826,8 +107358,8 @@ var requestTool46 = new ConnectorTool({
106826
107358
  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.
106827
107359
  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.
106828
107360
  Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads rather than paginating /sobjects/{Type} endpoints.`,
106829
- inputSchema: inputSchema75,
106830
- outputSchema: outputSchema75,
107361
+ inputSchema: inputSchema76,
107362
+ outputSchema: outputSchema76,
106831
107363
  async execute({ connectionId, method, path: path5, body }, connections) {
106832
107364
  const connection = connections.find((c6) => c6.id === connectionId);
106833
107365
  if (!connection) {
@@ -106840,9 +107372,9 @@ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads ra
106840
107372
  `[connector-request] salesforce/${connection.name}: ${method} ${path5}`
106841
107373
  );
106842
107374
  try {
106843
- const instanceUrlParam = parameters62.instanceUrl.getValue(connection);
106844
- const clientId = parameters62.clientId.getValue(connection);
106845
- const clientSecret = parameters62.clientSecret.getValue(connection);
107375
+ const instanceUrlParam = parameters63.instanceUrl.getValue(connection);
107376
+ const clientId = parameters63.clientId.getValue(connection);
107377
+ const clientSecret = parameters63.clientSecret.getValue(connection);
106846
107378
  const instanceUrl = normalizeInstanceUrl(instanceUrlParam);
106847
107379
  const tokenBody = new URLSearchParams({
106848
107380
  grant_type: "client_credentials",
@@ -106873,7 +107405,7 @@ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads ra
106873
107405
  const resolvedInstanceUrl = tokenJson.instance_url ?? instanceUrl;
106874
107406
  const url = `${resolvedInstanceUrl}${path5.startsWith("/") ? "" : "/"}${path5}`;
106875
107407
  const controller = new AbortController();
106876
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS59);
107408
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS60);
106877
107409
  try {
106878
107410
  const response = await fetch(url, {
106879
107411
  method,
@@ -106917,15 +107449,16 @@ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads ra
106917
107449
  });
106918
107450
 
106919
107451
  // ../connectors/src/connectors/salesforce/index.ts
106920
- var tools62 = { request: requestTool46 };
107452
+ var tools63 = { request: requestTool46 };
106921
107453
  var salesforceConnector = new ConnectorPlugin({
106922
107454
  slug: "salesforce",
106923
107455
  authType: AUTH_TYPES.API_KEY,
106924
107456
  name: "Salesforce",
106925
107457
  description: "Connect to Salesforce CRM for accounts, contacts, opportunities, leads, cases, and custom objects via SOQL and the REST API.",
106926
107458
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6vZlbrUKhxXIiuvWJlb8YB/bbc5e08b88de46c8ed338a74c7d0abb3/salesforce-icon.png",
106927
- parameters: parameters62,
107459
+ parameters: parameters63,
106928
107460
  releaseFlag: { dev1: true, dev2: true, prod: true },
107461
+ categories: ["crm"],
106929
107462
  onboarding: salesforceOnboarding,
106930
107463
  systemPrompt: {
106931
107464
  en: `### Tools
@@ -107071,7 +107604,7 @@ export default async function handler(c: Context) {
107071
107604
  - \u96C6\u8A08: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
107072
107605
  - \u89AA\u2192\u5B50\u30B5\u30D6\u30AF\u30A8\u30EA: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``
107073
107606
  },
107074
- tools: tools62
107607
+ tools: tools63
107075
107608
  });
107076
107609
 
107077
107610
  // ../connectors/src/connectors/influxdb/setup.ts
@@ -107133,7 +107666,7 @@ var influxdbOnboarding = new ConnectorOnboarding({
107133
107666
  });
107134
107667
 
107135
107668
  // ../connectors/src/connectors/influxdb/parameters.ts
107136
- var parameters63 = {
107669
+ var parameters64 = {
107137
107670
  url: new ParameterDefinition({
107138
107671
  slug: "url",
107139
107672
  name: "InfluxDB URL",
@@ -107173,35 +107706,35 @@ var parameters63 = {
107173
107706
  };
107174
107707
 
107175
107708
  // ../connectors/src/connectors/influxdb/tools/request.ts
107176
- import { z as z78 } from "zod";
107177
- var REQUEST_TIMEOUT_MS60 = 6e4;
107178
- var inputSchema76 = z78.object({
107179
- toolUseIntent: z78.string().optional().describe(
107709
+ import { z as z79 } from "zod";
107710
+ var REQUEST_TIMEOUT_MS61 = 6e4;
107711
+ var inputSchema77 = z79.object({
107712
+ toolUseIntent: z79.string().optional().describe(
107180
107713
  "Brief description of what you intend to accomplish with this tool call"
107181
107714
  ),
107182
- connectionId: z78.string().describe("ID of the InfluxDB connection to use"),
107183
- method: z78.enum(["GET", "POST", "DELETE"]).describe(
107715
+ connectionId: z79.string().describe("ID of the InfluxDB connection to use"),
107716
+ method: z79.enum(["GET", "POST", "DELETE"]).describe(
107184
107717
  "HTTP method. POST for SQL/InfluxQL/Flux queries and writes, GET for metadata endpoints, DELETE for delete endpoints."
107185
107718
  ),
107186
- path: z78.string().describe(
107719
+ path: z79.string().describe(
107187
107720
  "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."
107188
107721
  ),
107189
- body: z78.union([z78.record(z78.string(), z78.unknown()), z78.string()]).optional().describe(
107722
+ body: z79.union([z79.record(z79.string(), z79.unknown()), z79.string()]).optional().describe(
107190
107723
  "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."
107191
107724
  ),
107192
- contentType: z78.string().optional().describe(
107725
+ contentType: z79.string().optional().describe(
107193
107726
  "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'."
107194
107727
  )
107195
107728
  });
107196
- var outputSchema76 = z78.discriminatedUnion("success", [
107197
- z78.object({
107198
- success: z78.literal(true),
107199
- status: z78.number(),
107200
- data: z78.unknown()
107729
+ var outputSchema77 = z79.discriminatedUnion("success", [
107730
+ z79.object({
107731
+ success: z79.literal(true),
107732
+ status: z79.number(),
107733
+ data: z79.unknown()
107201
107734
  }),
107202
- z78.object({
107203
- success: z78.literal(false),
107204
- error: z78.string()
107735
+ z79.object({
107736
+ success: z79.literal(false),
107737
+ error: z79.string()
107205
107738
  })
107206
107739
  ]);
107207
107740
  var requestTool47 = new ConnectorTool({
@@ -107210,8 +107743,8 @@ var requestTool47 = new ConnectorTool({
107210
107743
  Authentication is handled automatically using the API token (\`Authorization: Token {token}\`). The instance URL is resolved from the connection.
107211
107744
  Use this tool for all InfluxDB interactions: running SQL / InfluxQL / Flux queries, writing line protocol, and managing buckets / databases.
107212
107745
  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.`,
107213
- inputSchema: inputSchema76,
107214
- outputSchema: outputSchema76,
107746
+ inputSchema: inputSchema77,
107747
+ outputSchema: outputSchema77,
107215
107748
  async execute({ connectionId, method, path: path5, body, contentType }, connections) {
107216
107749
  const connection = connections.find((c6) => c6.id === connectionId);
107217
107750
  if (!connection) {
@@ -107224,11 +107757,11 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
107224
107757
  `[connector-request] influxdb/${connection.name}: ${method} ${path5}`
107225
107758
  );
107226
107759
  try {
107227
- const url = parameters63.url.getValue(connection).replace(/\/$/, "");
107228
- const token = parameters63.token.getValue(connection);
107760
+ const url = parameters64.url.getValue(connection).replace(/\/$/, "");
107761
+ const token = parameters64.token.getValue(connection);
107229
107762
  const fullUrl = `${url}${path5.startsWith("/") ? "" : "/"}${path5}`;
107230
107763
  const controller = new AbortController();
107231
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS60);
107764
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS61);
107232
107765
  const resolvedContentType = contentType ?? (typeof body === "string" ? "text/plain; charset=utf-8" : "application/json");
107233
107766
  const serializedBody = body === void 0 ? void 0 : typeof body === "string" ? body : JSON.stringify(body);
107234
107767
  try {
@@ -107282,15 +107815,16 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
107282
107815
  });
107283
107816
 
107284
107817
  // ../connectors/src/connectors/influxdb/index.ts
107285
- var tools63 = { request: requestTool47 };
107818
+ var tools64 = { request: requestTool47 };
107286
107819
  var influxdbConnector = new ConnectorPlugin({
107287
107820
  slug: "influxdb",
107288
107821
  authType: AUTH_TYPES.API_KEY,
107289
107822
  name: "InfluxDB",
107290
107823
  description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
107291
107824
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/J1JauVRNmahSVTVrpPfQK/18350d8d3f2dc3be25e8e36ee52914a0/influxdb.png",
107292
- parameters: parameters63,
107825
+ parameters: parameters64,
107293
107826
  releaseFlag: { dev1: true, dev2: true, prod: true },
107827
+ categories: ["database"],
107294
107828
  onboarding: influxdbOnboarding,
107295
107829
  systemPrompt: {
107296
107830
  en: `### Variant Detection
@@ -107436,7 +107970,7 @@ export default async function handler(c: Context) {
107436
107970
  - \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
107437
107971
  - measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
107438
107972
  },
107439
- tools: tools63,
107973
+ tools: tools64,
107440
107974
  async checkConnection(params) {
107441
107975
  const url = (params.url ?? "").replace(/\/$/, "");
107442
107976
  const token = params.token;
@@ -107532,6 +108066,7 @@ var plugins = {
107532
108066
  customerio: customerioConnector,
107533
108067
  gmail: gmailConnector,
107534
108068
  gmailOauth: gmailOauthConnector,
108069
+ googleAuditLog: googleAuditLogConnector,
107535
108070
  linkedinAds: linkedinAdsConnector,
107536
108071
  zendesk: zendeskConnector,
107537
108072
  zendeskOauth: zendeskOauthConnector,
@@ -107770,62 +108305,62 @@ import { watch as fsWatch2 } from "fs";
107770
108305
  import path2 from "path";
107771
108306
 
107772
108307
  // src/types/server-logic.ts
107773
- import { z as z79 } from "zod";
107774
- var parameterMetaSchema = z79.object({
107775
- name: z79.string(),
107776
- type: z79.enum(["string", "number", "boolean"]),
107777
- description: z79.string(),
107778
- required: z79.boolean().optional(),
107779
- default: z79.union([z79.string(), z79.number(), z79.boolean()]).optional()
107780
- });
107781
- var serverLogicCacheConfigSchema = z79.object({
107782
- ttl: z79.number(),
107783
- staleWhileRevalidate: z79.boolean().optional()
107784
- });
107785
- var serverLogicSchemaObjectSchema = z79.lazy(
107786
- () => z79.object({
107787
- type: z79.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
107788
- format: z79.string().optional(),
107789
- description: z79.string().optional(),
107790
- nullable: z79.boolean().optional(),
107791
- enum: z79.array(z79.union([z79.string(), z79.number(), z79.boolean(), z79.null()])).optional(),
108308
+ import { z as z80 } from "zod";
108309
+ var parameterMetaSchema = z80.object({
108310
+ name: z80.string(),
108311
+ type: z80.enum(["string", "number", "boolean"]),
108312
+ description: z80.string(),
108313
+ required: z80.boolean().optional(),
108314
+ default: z80.union([z80.string(), z80.number(), z80.boolean()]).optional()
108315
+ });
108316
+ var serverLogicCacheConfigSchema = z80.object({
108317
+ ttl: z80.number(),
108318
+ staleWhileRevalidate: z80.boolean().optional()
108319
+ });
108320
+ var serverLogicSchemaObjectSchema = z80.lazy(
108321
+ () => z80.object({
108322
+ type: z80.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
108323
+ format: z80.string().optional(),
108324
+ description: z80.string().optional(),
108325
+ nullable: z80.boolean().optional(),
108326
+ enum: z80.array(z80.union([z80.string(), z80.number(), z80.boolean(), z80.null()])).optional(),
107792
108327
  items: serverLogicSchemaObjectSchema.optional(),
107793
- properties: z79.record(z79.string(), serverLogicSchemaObjectSchema).optional(),
107794
- required: z79.array(z79.string()).optional(),
107795
- additionalProperties: z79.union([z79.boolean(), serverLogicSchemaObjectSchema]).optional(),
107796
- minimum: z79.number().optional(),
107797
- maximum: z79.number().optional(),
107798
- minLength: z79.number().optional(),
107799
- maxLength: z79.number().optional(),
107800
- pattern: z79.string().optional()
108328
+ properties: z80.record(z80.string(), serverLogicSchemaObjectSchema).optional(),
108329
+ required: z80.array(z80.string()).optional(),
108330
+ additionalProperties: z80.union([z80.boolean(), serverLogicSchemaObjectSchema]).optional(),
108331
+ minimum: z80.number().optional(),
108332
+ maximum: z80.number().optional(),
108333
+ minLength: z80.number().optional(),
108334
+ maxLength: z80.number().optional(),
108335
+ pattern: z80.string().optional()
107801
108336
  })
107802
108337
  );
107803
- var serverLogicMediaTypeSchema = z79.object({
108338
+ var serverLogicMediaTypeSchema = z80.object({
107804
108339
  schema: serverLogicSchemaObjectSchema.optional(),
107805
- example: z79.unknown().optional()
108340
+ example: z80.unknown().optional()
107806
108341
  });
107807
- var serverLogicResponseSchema = z79.object({
107808
- description: z79.string().optional(),
107809
- content: z79.record(z79.string(), serverLogicMediaTypeSchema).optional()
108342
+ var serverLogicResponseSchema = z80.object({
108343
+ description: z80.string().optional(),
108344
+ content: z80.record(z80.string(), serverLogicMediaTypeSchema).optional()
107810
108345
  });
107811
108346
  var jsonBaseFields = {
107812
- description: z79.string(),
107813
- parameters: z79.array(parameterMetaSchema).optional(),
108347
+ description: z80.string(),
108348
+ parameters: z80.array(parameterMetaSchema).optional(),
107814
108349
  response: serverLogicResponseSchema.optional(),
107815
108350
  cache: serverLogicCacheConfigSchema.optional()
107816
108351
  };
107817
- var jsonSqlServerLogicSchema = z79.object({
108352
+ var jsonSqlServerLogicSchema = z80.object({
107818
108353
  ...jsonBaseFields,
107819
- type: z79.literal("sql").optional(),
107820
- query: z79.string(),
107821
- connectionId: z79.string()
108354
+ type: z80.literal("sql").optional(),
108355
+ query: z80.string(),
108356
+ connectionId: z80.string()
107822
108357
  });
107823
- var jsonTypeScriptServerLogicSchema = z79.object({
108358
+ var jsonTypeScriptServerLogicSchema = z80.object({
107824
108359
  ...jsonBaseFields,
107825
- type: z79.literal("typescript"),
107826
- handlerPath: z79.string()
108360
+ type: z80.literal("typescript"),
108361
+ handlerPath: z80.string()
107827
108362
  });
107828
- var anyJsonServerLogicSchema = z79.union([
108363
+ var anyJsonServerLogicSchema = z80.union([
107829
108364
  jsonTypeScriptServerLogicSchema,
107830
108365
  jsonSqlServerLogicSchema
107831
108366
  ]);