@squadbase/vite-server 0.1.4 → 0.1.5-dev.1

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 (48) hide show
  1. package/dist/cli/index.js +819 -258
  2. package/dist/connectors/airtable-oauth.js +0 -8
  3. package/dist/connectors/amplitude.js +1 -1
  4. package/dist/connectors/asana.js +1 -1
  5. package/dist/connectors/attio.js +1 -1
  6. package/dist/connectors/backlog-api-key.js +1 -1
  7. package/dist/connectors/customerio.js +1 -1
  8. package/dist/connectors/gamma.js +1 -1
  9. package/dist/connectors/gmail-oauth.js +0 -8
  10. package/dist/connectors/gmail.js +1 -9
  11. package/dist/connectors/google-ads.js +0 -8
  12. package/dist/connectors/google-analytics-oauth.js +0 -8
  13. package/dist/connectors/google-calendar-oauth.js +0 -8
  14. package/dist/connectors/google-calendar.js +0 -10
  15. package/dist/connectors/google-docs.js +3 -1
  16. package/dist/connectors/hubspot-oauth.js +0 -6
  17. package/dist/connectors/hubspot.js +1 -1
  18. package/dist/connectors/influxdb.d.ts +5 -0
  19. package/dist/connectors/influxdb.js +767 -0
  20. package/dist/connectors/intercom-oauth.js +0 -6
  21. package/dist/connectors/intercom.js +1 -1
  22. package/dist/connectors/jira-api-key.js +1 -1
  23. package/dist/connectors/kintone-api-token.js +1 -1
  24. package/dist/connectors/linear.d.ts +5 -0
  25. package/dist/connectors/linear.js +688 -0
  26. package/dist/connectors/linkedin-ads.js +0 -8
  27. package/dist/connectors/mailchimp.js +1 -1
  28. package/dist/connectors/meta-ads-oauth.d.ts +5 -0
  29. package/dist/connectors/meta-ads-oauth.js +795 -0
  30. package/dist/connectors/meta-ads.d.ts +5 -0
  31. package/dist/connectors/meta-ads.js +780 -0
  32. package/dist/connectors/mixpanel.js +1 -1
  33. package/dist/connectors/notion-oauth.js +1 -7
  34. package/dist/connectors/notion.js +1 -1
  35. package/dist/connectors/salesforce.d.ts +5 -0
  36. package/dist/connectors/salesforce.js +862 -0
  37. package/dist/connectors/sentry.js +1 -1
  38. package/dist/connectors/shopify-oauth.js +0 -6
  39. package/dist/connectors/stripe-api-key.js +1 -5
  40. package/dist/connectors/stripe-oauth.js +0 -6
  41. package/dist/connectors/tiktok-ads.d.ts +5 -0
  42. package/dist/connectors/tiktok-ads.js +840 -0
  43. package/dist/connectors/zendesk-oauth.js +0 -6
  44. package/dist/connectors/zendesk.js +1 -1
  45. package/dist/index.js +819 -258
  46. package/dist/main.js +819 -258
  47. package/dist/vite-plugin.js +819 -258
  48. package/package.json +25 -1
@@ -18863,14 +18863,14 @@ var init_NormalizedSchema = __esm({
18863
18863
  throw new Error("@smithy/core/schema - cannot iterate non-struct schema.");
18864
18864
  }
18865
18865
  const struct = this.getSchema();
18866
- const z78 = struct[4].length;
18866
+ const z80 = struct[4].length;
18867
18867
  let it = struct[anno.it];
18868
- if (it && z78 === it.length) {
18868
+ if (it && z80 === it.length) {
18869
18869
  yield* it;
18870
18870
  return;
18871
18871
  }
18872
- it = Array(z78);
18873
- for (let i6 = 0; i6 < z78; ++i6) {
18872
+ it = Array(z80);
18873
+ for (let i6 = 0; i6 < z80; ++i6) {
18874
18874
  const k6 = struct[4][i6];
18875
18875
  const v7 = member([struct[5][i6], 0], k6);
18876
18876
  yield it[i6] = [k6, v7];
@@ -19546,12 +19546,12 @@ var init_split_header = __esm({
19546
19546
  "../../node_modules/@smithy/core/dist-es/submodules/serde/split-header.js"() {
19547
19547
  "use strict";
19548
19548
  splitHeader = (value) => {
19549
- const z78 = value.length;
19549
+ const z80 = value.length;
19550
19550
  const values = [];
19551
19551
  let withinQuotes = false;
19552
19552
  let prevChar = void 0;
19553
19553
  let anchor = 0;
19554
- for (let i6 = 0; i6 < z78; ++i6) {
19554
+ for (let i6 = 0; i6 < z80; ++i6) {
19555
19555
  const char = value[i6];
19556
19556
  switch (char) {
19557
19557
  case `"`:
@@ -19572,12 +19572,12 @@ var init_split_header = __esm({
19572
19572
  values.push(value.slice(anchor));
19573
19573
  return values.map((v7) => {
19574
19574
  v7 = v7.trim();
19575
- const z79 = v7.length;
19576
- if (z79 < 2) {
19575
+ const z81 = v7.length;
19576
+ if (z81 < 2) {
19577
19577
  return v7;
19578
19578
  }
19579
- if (v7[0] === `"` && v7[z79 - 1] === `"`) {
19580
- v7 = v7.slice(1, z79 - 1);
19579
+ if (v7[0] === `"` && v7[z81 - 1] === `"`) {
19580
+ v7 = v7.slice(1, z81 - 1);
19581
19581
  }
19582
19582
  return v7.replace(/\\"/g, '"');
19583
19583
  });
@@ -20975,11 +20975,11 @@ var init_EndpointCache = __esm({
20975
20975
  }
20976
20976
  hash(endpointParams) {
20977
20977
  let buffer = "";
20978
- const { parameters: parameters62 } = this;
20979
- if (parameters62.length === 0) {
20978
+ const { parameters: parameters64 } = this;
20979
+ if (parameters64.length === 0) {
20980
20980
  return false;
20981
20981
  }
20982
- for (const param of parameters62) {
20982
+ for (const param of parameters64) {
20983
20983
  const val = String(endpointParams[param] ?? "");
20984
20984
  if (val.includes("|;")) {
20985
20985
  return false;
@@ -21696,15 +21696,15 @@ var init_resolveEndpoint = __esm({
21696
21696
  init_utils();
21697
21697
  resolveEndpoint = (ruleSetObject, options) => {
21698
21698
  const { endpointParams, logger: logger2 } = options;
21699
- const { parameters: parameters62, rules } = ruleSetObject;
21699
+ const { parameters: parameters64, rules } = ruleSetObject;
21700
21700
  options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
21701
- const paramsWithDefault = Object.entries(parameters62).filter(([, v7]) => v7.default != null).map(([k6, v7]) => [k6, v7.default]);
21701
+ const paramsWithDefault = Object.entries(parameters64).filter(([, v7]) => v7.default != null).map(([k6, v7]) => [k6, v7.default]);
21702
21702
  if (paramsWithDefault.length > 0) {
21703
21703
  for (const [paramKey, paramDefaultValue] of paramsWithDefault) {
21704
21704
  endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;
21705
21705
  }
21706
21706
  }
21707
- const requiredParams = Object.entries(parameters62).filter(([, v7]) => v7.required).map(([k6]) => k6);
21707
+ const requiredParams = Object.entries(parameters64).filter(([, v7]) => v7.required).map(([k6]) => k6);
21708
21708
  for (const requiredParam of requiredParams) {
21709
21709
  if (endpointParams[requiredParam] == null) {
21710
21710
  throw new EndpointError(`Missing required parameter: '${requiredParam}'`);
@@ -27314,8 +27314,8 @@ var init_ProtocolLib = __esm({
27314
27314
  constructor(queryCompat = false) {
27315
27315
  this.queryCompat = queryCompat;
27316
27316
  }
27317
- resolveRestContentType(defaultContentType, inputSchema75) {
27318
- const members = inputSchema75.getMemberSchemas();
27317
+ resolveRestContentType(defaultContentType, inputSchema77) {
27318
+ const members = inputSchema77.getMemberSchemas();
27319
27319
  const httpPayloadMember = Object.values(members).find((m6) => {
27320
27320
  return !!m6.getMergedTraits().httpPayload;
27321
27321
  });
@@ -27330,7 +27330,7 @@ var init_ProtocolLib = __esm({
27330
27330
  } else {
27331
27331
  return defaultContentType;
27332
27332
  }
27333
- } else if (!inputSchema75.isUnitSchema()) {
27333
+ } else if (!inputSchema77.isUnitSchema()) {
27334
27334
  const hasBody = Object.values(members).find((m6) => {
27335
27335
  const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m6.getMergedTraits();
27336
27336
  const noPrefixHeaders = httpPrefixHeaders === void 0;
@@ -28173,9 +28173,9 @@ var init_AwsRestJsonProtocol = __esm({
28173
28173
  }
28174
28174
  async serializeRequest(operationSchema, input, context) {
28175
28175
  const request2 = await super.serializeRequest(operationSchema, input, context);
28176
- const inputSchema75 = NormalizedSchema.of(operationSchema.input);
28176
+ const inputSchema77 = NormalizedSchema.of(operationSchema.input);
28177
28177
  if (!request2.headers["content-type"]) {
28178
- const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema75);
28178
+ const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema77);
28179
28179
  if (contentType) {
28180
28180
  request2.headers["content-type"] = contentType;
28181
28181
  }
@@ -28187,8 +28187,8 @@ var init_AwsRestJsonProtocol = __esm({
28187
28187
  }
28188
28188
  async deserializeResponse(operationSchema, context, response) {
28189
28189
  const output = await super.deserializeResponse(operationSchema, context, response);
28190
- const outputSchema75 = NormalizedSchema.of(operationSchema.output);
28191
- for (const [name, member2] of outputSchema75.structIterator()) {
28190
+ const outputSchema77 = NormalizedSchema.of(operationSchema.output);
28191
+ for (const [name, member2] of outputSchema77.structIterator()) {
28192
28192
  if (member2.getMemberTraits().httpPayload && !(name in output)) {
28193
28193
  output[name] = null;
28194
28194
  }
@@ -32052,22 +32052,22 @@ var init_loadCognitoIdentity = __esm({
32052
32052
  });
32053
32053
 
32054
32054
  // ../../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js
32055
- function fromCognitoIdentity(parameters62) {
32055
+ function fromCognitoIdentity(parameters64) {
32056
32056
  return async (awsIdentityProperties) => {
32057
- parameters62.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity");
32057
+ parameters64.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity");
32058
32058
  const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));
32059
- const fromConfigs = (property) => parameters62.clientConfig?.[property] ?? parameters62.parentClientConfig?.[property] ?? awsIdentityProperties?.callerClientConfig?.[property];
32060
- const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters62.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters62.logger), SessionToken } = throwOnMissingCredentials(parameters62.logger) } = await (parameters62.client ?? new CognitoIdentityClient2(Object.assign({}, parameters62.clientConfig ?? {}, {
32059
+ const fromConfigs = (property) => parameters64.clientConfig?.[property] ?? parameters64.parentClientConfig?.[property] ?? awsIdentityProperties?.callerClientConfig?.[property];
32060
+ const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters64.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters64.logger), SessionToken } = throwOnMissingCredentials(parameters64.logger) } = await (parameters64.client ?? new CognitoIdentityClient2(Object.assign({}, parameters64.clientConfig ?? {}, {
32061
32061
  region: fromConfigs("region"),
32062
32062
  profile: fromConfigs("profile"),
32063
32063
  userAgentAppId: fromConfigs("userAgentAppId")
32064
32064
  }))).send(new GetCredentialsForIdentityCommand2({
32065
- CustomRoleArn: parameters62.customRoleArn,
32066
- IdentityId: parameters62.identityId,
32067
- Logins: parameters62.logins ? await resolveLogins(parameters62.logins) : void 0
32065
+ CustomRoleArn: parameters64.customRoleArn,
32066
+ IdentityId: parameters64.identityId,
32067
+ Logins: parameters64.logins ? await resolveLogins(parameters64.logins) : void 0
32068
32068
  }));
32069
32069
  return {
32070
- identityId: parameters62.identityId,
32070
+ identityId: parameters64.identityId,
32071
32071
  accessKeyId: AccessKeyId,
32072
32072
  secretAccessKey: SecretKey,
32073
32073
  sessionToken: SessionToken,
@@ -44628,11 +44628,11 @@ var require_bignumber = __commonJS({
44628
44628
  return n6 > 0 || n6 === i6 ? i6 : i6 - 1;
44629
44629
  }
44630
44630
  function coeffToString(a6) {
44631
- var s6, z78, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
44631
+ var s6, z80, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
44632
44632
  for (; i6 < j6; ) {
44633
44633
  s6 = a6[i6++] + "";
44634
- z78 = LOG_BASE - s6.length;
44635
- for (; z78--; s6 = "0" + s6) ;
44634
+ z80 = LOG_BASE - s6.length;
44635
+ for (; z80--; s6 = "0" + s6) ;
44636
44636
  r6 += s6;
44637
44637
  }
44638
44638
  for (j6 = r6.length; r6.charCodeAt(--j6) === 48; ) ;
@@ -44665,15 +44665,15 @@ var require_bignumber = __commonJS({
44665
44665
  function toExponential(str, e6) {
44666
44666
  return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e6 < 0 ? "e" : "e+") + e6;
44667
44667
  }
44668
- function toFixedPoint(str, e6, z78) {
44668
+ function toFixedPoint(str, e6, z80) {
44669
44669
  var len, zs;
44670
44670
  if (e6 < 0) {
44671
- for (zs = z78 + "."; ++e6; zs += z78) ;
44671
+ for (zs = z80 + "."; ++e6; zs += z80) ;
44672
44672
  str = zs + str;
44673
44673
  } else {
44674
44674
  len = str.length;
44675
44675
  if (++e6 > len) {
44676
- for (zs = z78, e6 -= len; --e6; zs += z78) ;
44676
+ for (zs = z80, e6 -= len; --e6; zs += z80) ;
44677
44677
  str += zs;
44678
44678
  } else if (e6 < len) {
44679
44679
  str = str.slice(0, e6) + "." + str.slice(e6);
@@ -66439,11 +66439,7 @@ var snowflakeOnboarding = new ConnectorOnboarding({
66439
66439
  8. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
66440
66440
  - **\u30C6\u30FC\u30D6\u30EB\u304C2\u3064\u4EE5\u4E0A**: \`askUserQuestion\`\uFF08multiSelect: true\uFF09\u3067\u30E6\u30FC\u30B6\u30FC\u306B\u63D0\u793A\u3057\u3001\u4F7F\u7528\u3059\u308B\u30C6\u30FC\u30D6\u30EB\u3092\u9078\u629E\u3055\u305B\u308B\u3002description \u306B\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u540D.\u30B9\u30AD\u30FC\u30DE\u540D\u3092\u8A18\u8F09\u3059\u308B
66441
66441
  - **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
66442
- 9. \`updateConnectionContext\` \u3067\u4EE5\u4E0B\u3092\u4FDD\u5B58\u3059\u308B:
66443
- - \`database\`: \u9078\u629E\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u540D\uFF08\u8907\u6570\u306E\u5834\u5408\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09
66444
- - \`schema\`: \u9078\u629E\u3055\u308C\u305F\u30B9\u30AD\u30FC\u30DE\u540D\uFF08\u8907\u6570\u306E\u5834\u5408\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09
66445
- - \`tables\`: \u9078\u629E\u3055\u308C\u305F\u30C6\u30FC\u30D6\u30EB\u540D\uFF08\u5B8C\u5168\u4FEE\u98FE\u540D database.schema.table\u3001\u8907\u6570\u306E\u5834\u5408\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3002\u300C\u5168\u30C6\u30FC\u30D6\u30EB\u300D\u306E\u5834\u5408\u306F "{database}.{schema}.*"\uFF09
66446
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
66442
+ 9. Phase 5 \u306E \`finalizeSetup\` \u306B\u6E21\u3059 \`projectKnowledge\` \u3067\u306F\u3001\u30B9\u30C6\u30C3\u30D72\u3067\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092 \`#### \u30B9\u30B3\u30FC\u30D7\` \u7BC0\u306B \`- database: <\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u540D>\` \u3068\u3057\u3066\u3001\u30B9\u30C6\u30C3\u30D75\u3067\u9078\u629E\u3057\u305F\u30B9\u30AD\u30FC\u30DE\u3092 \`- schema: <\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u540D>.<\u30B9\u30AD\u30FC\u30DE\u540D>\` \u3068\u3057\u3066\u8A18\u9332\u3059\u308B\u3053\u3068\uFF08\u8907\u6570\u9078\u629E\u3057\u305F\u5834\u5408\u306F\u8907\u6570\u884C\u3067\u5217\u6319\u3059\u308B\uFF09\u3002\u300C\u5168\u30C6\u30FC\u30D6\u30EB\u300D\u304C\u9078\u3070\u308C\u305F\u30B9\u30AD\u30FC\u30DE\u306B\u3064\u3044\u3066\u306F \`#### \u30C6\u30FC\u30D6\u30EB\` \u3067\u500B\u5225\u5217\u6319\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30B9\u30B3\u30FC\u30D7\u7BC0\u306B \`- allTables: <\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u540D>.<\u30B9\u30AD\u30FC\u30DE\u540D>.*\` \u306E\u5F62\u3067\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u7BC4\u56F2\u3092\u660E\u793A\u7684\u306B\u8A18\u9332\u3059\u308B\u3002\u500B\u5225\u306B\u9078\u629E\u3055\u308C\u305F\u30C6\u30FC\u30D6\u30EB\u306F \`#### \u30C6\u30FC\u30D6\u30EB\` \u7BC0\u3067\u5217\u6319\u3055\u308C\u308B\u305F\u3081\u3001\u30B9\u30B3\u30FC\u30D7\u7BC0\u306B\u306F\u66F8\u304B\u306A\u3044\u3002
66447
66443
 
66448
66444
  #### \u5236\u7D04
66449
66445
  - askUserQuestion \u306E options \u306B\u306F\u6700\u4F4E2\u4EF6\u5FC5\u8981\u30021\u4EF6\u3057\u304B\u306A\u3044\u5834\u5408\u306F askUserQuestion \u3092\u547C\u3070\u305A\u6B21\u306E\u30B9\u30C6\u30C3\u30D7\u306B\u9032\u3080\u3053\u3068
@@ -66466,11 +66462,7 @@ var snowflakeOnboarding = new ConnectorOnboarding({
66466
66462
  8. Branch based on results:
66467
66463
  - **2 or more tables**: Present them to the user via \`askUserQuestion\` (multiSelect: true) and let them select which tables to use. Include database.schema in the description
66468
66464
  - **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
66469
- 9. Call \`updateConnectionContext\` to save:
66470
- - \`database\`: Selected database name(s) (comma-separated if multiple)
66471
- - \`schema\`: Selected schema name(s) (comma-separated if multiple)
66472
- - \`tables\`: Selected table names (fully qualified database.schema.table, comma-separated if multiple. Use "{database}.{schema}.*" for "all tables" schemas)
66473
- - \`note\`: Brief description of the setup
66465
+ 9. When passing \`projectKnowledge\` to \`finalizeSetup\` in Phase 5, record each database selected in step 2 under the \`#### \u30B9\u30B3\u30FC\u30D7\` subsection as \`- database: <database_name>\` and each schema selected in step 5 as \`- schema: <database_name>.<schema_name>\` (one bullet per selection if multiple were chosen). For schemas where "all tables" was chosen, the wildcard range cannot be expressed by the per-table enumeration under \`#### \u30C6\u30FC\u30D6\u30EB\`, so record it in the scope section as \`- allTables: <database_name>.<schema_name>.*\`. Individually selected tables are listed under \`#### \u30C6\u30FC\u30D6\u30EB\`, so do NOT repeat them in the scope section.
66474
66466
 
66475
66467
  #### Constraints
66476
66468
  - askUserQuestion options requires at least 2 items. If there is only 1 item, do NOT call askUserQuestion \u2014 proceed to the next step directly
@@ -67604,10 +67596,7 @@ var bigqueryOnboarding = new ConnectorOnboarding({
67604
67596
  7. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
67605
67597
  - **\u30C6\u30FC\u30D6\u30EB\u304C2\u3064\u4EE5\u4E0A**: \`askUserQuestion\`\uFF08multiSelect: true\uFF09\u3067\u30E6\u30FC\u30B6\u30FC\u306B\u63D0\u793A\u3057\u3001\u4F7F\u7528\u3059\u308B\u30C6\u30FC\u30D6\u30EB\u3092\u9078\u629E\u3055\u305B\u308B\u3002description \u306B\u306F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\u3092\u8A18\u8F09\u3059\u308B
67606
67598
  - **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
67607
- 8. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
67608
- - \`dataset\`: \u9078\u629E\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\uFF08\u8907\u6570\u306E\u5834\u5408\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002\u30D1\u30D6\u30EA\u30C3\u30AF\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306F \`bigquery-public-data.{dataset}\` \u306E\u5F62\u5F0F\u3067\u8A18\u9332\u3059\u308B
67609
- - \`tables\`: \u9078\u629E\u3055\u308C\u305F\u30C6\u30FC\u30D6\u30EB\u540D\uFF08\u8907\u6570\u306E\u5834\u5408\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09
67610
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
67599
+ 8. Phase 5 \u306E \`finalizeSetup\` \u306B\u6E21\u3059 \`projectKnowledge\` \u3067\u306F\u3001\u30B9\u30C6\u30C3\u30D75\u3067\u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092 \`#### \u30B9\u30B3\u30FC\u30D7\` \u7BC0\u306B \`- dataset: <\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D>\` \u3068\u3057\u3066\u8A18\u9332\u3059\u308B\u3053\u3068\uFF08\u8907\u6570\u9078\u629E\u3057\u305F\u5834\u5408\u306F\u8907\u6570\u884C\u3067\u5217\u6319\u3059\u308B\uFF09\u3002\u30D1\u30D6\u30EA\u30C3\u30AF\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306F \`bigquery-public-data.{dataset}\` \u306E\u5F62\u5F0F\u3067\u8A18\u9332\u3059\u308B\u3002\u9078\u629E\u3057\u305F\u30C6\u30FC\u30D6\u30EB\u306F \`#### \u30C6\u30FC\u30D6\u30EB\` \u7BC0\u3067\u5217\u6319\u3055\u308C\u308B\u305F\u3081\u3001\u30B9\u30B3\u30FC\u30D7\u7BC0\u306B \`tables\` \u306F\u66F8\u304B\u306A\u3044\u3002
67611
67600
 
67612
67601
  #### \u5236\u7D04
67613
67602
  - **\u30C6\u30FC\u30D6\u30EB\u306E\u884C\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30AF\u30A8\u30EA\u306E\u307F\u3002\u305D\u308C\u4EE5\u5916\u306E\u30AF\u30A8\u30EA\u306F\u5B9F\u884C\u7981\u6B62
@@ -67636,10 +67625,7 @@ var bigqueryOnboarding = new ConnectorOnboarding({
67636
67625
  7. Branch based on results:
67637
67626
  - **2 or more tables**: Present them to the user via \`askUserQuestion\` (multiSelect: true) and let them select which tables to use. Include the dataset name in the description
67638
67627
  - **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
67639
- 8. Call \`updateConnectionContext\`:
67640
- - \`dataset\`: Selected dataset name(s) (comma-separated if multiple). Record public datasets in the format \`bigquery-public-data.{dataset}\`
67641
- - \`tables\`: Selected table name(s) (comma-separated if multiple)
67642
- - \`note\`: Brief description of the setup
67628
+ 8. When passing \`projectKnowledge\` to \`finalizeSetup\` in Phase 5, record each dataset selected in step 5 under the \`#### \u30B9\u30B3\u30FC\u30D7\` subsection as \`- dataset: <dataset_name>\` (one bullet per dataset if multiple were chosen). Use the form \`bigquery-public-data.{dataset}\` for public datasets. Selected tables are listed under \`#### \u30C6\u30FC\u30D6\u30EB\`, so do NOT add a \`tables:\` entry to the scope section.
67643
67629
 
67644
67630
  #### Constraints
67645
67631
  - **Do NOT read table row data**. Only the metadata queries specified in the steps above are allowed. All other queries are forbidden
@@ -68066,10 +68052,7 @@ var bigqueryOnboarding2 = new ConnectorOnboarding({
68066
68052
  7. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
68067
68053
  - **\u30C6\u30FC\u30D6\u30EB\u304C2\u3064\u4EE5\u4E0A**: \`askUserQuestion\`\uFF08multiSelect: true\uFF09\u3067\u30E6\u30FC\u30B6\u30FC\u306B\u63D0\u793A\u3057\u3001\u4F7F\u7528\u3059\u308B\u30C6\u30FC\u30D6\u30EB\u3092\u9078\u629E\u3055\u305B\u308B\u3002description \u306B\u306F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\u3092\u8A18\u8F09\u3059\u308B
68068
68054
  - **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
68069
- 8. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
68070
- - \`dataset\`: \u9078\u629E\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D\uFF08\u8907\u6570\u306E\u5834\u5408\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002\u30D1\u30D6\u30EA\u30C3\u30AF\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306F \`bigquery-public-data.{dataset}\` \u306E\u5F62\u5F0F\u3067\u8A18\u9332\u3059\u308B
68071
- - \`tables\`: \u9078\u629E\u3055\u308C\u305F\u30C6\u30FC\u30D6\u30EB\u540D\uFF08\u8907\u6570\u306E\u5834\u5408\u306F\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09
68072
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
68055
+ 8. Phase 5 \u306E \`finalizeSetup\` \u306B\u6E21\u3059 \`projectKnowledge\` \u3067\u306F\u3001\u30B9\u30C6\u30C3\u30D75\u3067\u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092 \`#### \u30B9\u30B3\u30FC\u30D7\` \u7BC0\u306B \`- dataset: <\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u540D>\` \u3068\u3057\u3066\u8A18\u9332\u3059\u308B\u3053\u3068\uFF08\u8907\u6570\u9078\u629E\u3057\u305F\u5834\u5408\u306F\u8907\u6570\u884C\u3067\u5217\u6319\u3059\u308B\uFF09\u3002\u30D1\u30D6\u30EA\u30C3\u30AF\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u306F \`bigquery-public-data.{dataset}\` \u306E\u5F62\u5F0F\u3067\u8A18\u9332\u3059\u308B\u3002\u9078\u629E\u3057\u305F\u30C6\u30FC\u30D6\u30EB\u306F \`#### \u30C6\u30FC\u30D6\u30EB\` \u7BC0\u3067\u5217\u6319\u3055\u308C\u308B\u305F\u3081\u3001\u30B9\u30B3\u30FC\u30D7\u7BC0\u306B \`tables\` \u306F\u66F8\u304B\u306A\u3044\u3002
68073
68056
 
68074
68057
  #### \u5236\u7D04
68075
68058
  - **\u30C6\u30FC\u30D6\u30EB\u306E\u884C\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30AF\u30A8\u30EA\u306E\u307F\u3002\u305D\u308C\u4EE5\u5916\u306E\u30AF\u30A8\u30EA\u306F\u5B9F\u884C\u7981\u6B62
@@ -68098,10 +68081,7 @@ var bigqueryOnboarding2 = new ConnectorOnboarding({
68098
68081
  7. Branch based on results:
68099
68082
  - **2 or more tables**: Present them to the user via \`askUserQuestion\` (multiSelect: true) and let them select which tables to use. Include the dataset name in the description
68100
68083
  - **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
68101
- 8. Call \`updateConnectionContext\`:
68102
- - \`dataset\`: Selected dataset name(s) (comma-separated if multiple). Record public datasets in the format \`bigquery-public-data.{dataset}\`
68103
- - \`tables\`: Selected table name(s) (comma-separated if multiple)
68104
- - \`note\`: Brief description of the setup
68084
+ 8. When passing \`projectKnowledge\` to \`finalizeSetup\` in Phase 5, record each dataset selected in step 5 under the \`#### \u30B9\u30B3\u30FC\u30D7\` subsection as \`- dataset: <dataset_name>\` (one bullet per dataset if multiple were chosen). Use the form \`bigquery-public-data.{dataset}\` for public datasets. Selected tables are listed under \`#### \u30C6\u30FC\u30D6\u30EB\`, so do NOT add a \`tables:\` entry to the scope section.
68105
68085
 
68106
68086
  #### Constraints
68107
68087
  - **Do NOT read table row data**. Only the metadata queries specified in the steps above are allowed. All other queries are forbidden
@@ -69721,10 +69701,6 @@ var googleAdsOnboarding = new ConnectorOnboarding({
69721
69701
  - \`parameterSlug\`: \`"customer-id"\`
69722
69702
  - \`options\`: \u30AB\u30B9\u30BF\u30DE\u30FC\u4E00\u89A7\u3002\u5404 option \u306E \`label\` \u306F \`\u30A2\u30AB\u30A6\u30F3\u30C8\u540D (id: \u30AB\u30B9\u30BF\u30DE\u30FCID)\` \u306E\u5F62\u5F0F\u3001\`value\` \u306F\u30AB\u30B9\u30BF\u30DE\u30FCID
69723
69703
  5. \u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30AB\u30B9\u30BF\u30DE\u30FC\u306E \`label\` \u304C\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u3057\u3066\u5C4A\u304F\u306E\u3067\u3001\u6B21\u306E\u30B9\u30C6\u30C3\u30D7\u306B\u9032\u3080
69724
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
69725
- - \`customer\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30B9\u30BF\u30DE\u30FC\u306E\u8868\u793A\u540D
69726
- - \`customerId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30B9\u30BF\u30DE\u30FCID
69727
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
69728
69704
 
69729
69705
  #### \u5236\u7D04
69730
69706
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30EC\u30DD\u30FC\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u306E\u307F
@@ -69740,10 +69716,6 @@ var googleAdsOnboarding = new ConnectorOnboarding({
69740
69716
  - \`parameterSlug\`: \`"customer-id"\`
69741
69717
  - \`options\`: The customer list. Each option's \`label\` should be \`Account Name (id: customerId)\`, \`value\` should be the customer ID
69742
69718
  5. The \`label\` of the user's selected customer will arrive as a message. Proceed to the next step
69743
- 6. Call \`updateConnectionContext\`:
69744
- - \`customer\`: The selected customer's display name
69745
- - \`customerId\`: The selected customer ID
69746
- - \`note\`: Brief description of the setup
69747
69719
 
69748
69720
  #### Constraints
69749
69721
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -70586,10 +70558,6 @@ var googleAnalyticsOauthOnboarding = new ConnectorOnboarding({
70586
70558
  - \`options\`: \u30D7\u30ED\u30D1\u30C6\u30A3\u4E00\u89A7\u3002\u5404 option \u306E \`label\` \u306F \`\u8868\u793A\u540D (id: \u30D7\u30ED\u30D1\u30C6\u30A3ID)\` \u306E\u5F62\u5F0F\u3001\`value\` \u306F\u30D7\u30ED\u30D1\u30C6\u30A3ID
70587
70559
  - \u30D7\u30ED\u30D1\u30C6\u30A3\u304C **0\u4EF6** \u306E\u5834\u5408\u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u4E2D\u65AD\u3057\u3001\u30E6\u30FC\u30B6\u30FC\u306B\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u306A\u3044\u65E8\u3092\u4F1D\u3048\u308B
70588
70560
  5. \u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30D7\u30ED\u30D1\u30C6\u30A3\u306E \`label\` \u304C\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u3057\u3066\u5C4A\u304F\u306E\u3067\u3001\u6B21\u306E\u30B9\u30C6\u30C3\u30D7\u306B\u9032\u3080
70589
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
70590
- - \`property\`: \u9078\u629E\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u8868\u793A\u540D
70591
- - \`propertyId\`: \u9078\u629E\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3ID
70592
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
70593
70561
 
70594
70562
  #### \u5236\u7D04
70595
70563
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30EC\u30DD\u30FC\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u306E\u307F
@@ -70608,10 +70576,6 @@ var googleAnalyticsOauthOnboarding = new ConnectorOnboarding({
70608
70576
  - \`options\`: The property list. Each option's \`label\` should be \`Display Name (id: propertyId)\`, \`value\` should be the property ID
70609
70577
  - If **0 properties** are returned, abort setup and inform the user that no accessible properties are available
70610
70578
  5. The \`label\` of the user's selected property will arrive as a message. Proceed to the next step
70611
- 6. Call \`updateConnectionContext\`:
70612
- - \`property\`: The selected property's display name
70613
- - \`propertyId\`: The selected property ID
70614
- - \`note\`: Brief description of the setup
70615
70579
 
70616
70580
  #### Constraints
70617
70581
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -71183,11 +71147,6 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
71183
71147
  5. \u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u306E \`label\` \u304B\u3089 owner \u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u62BD\u51FA\u3057\u3001\`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3057\u3066 \`impersonate-email\` \u3092\u6700\u7D42\u5024\u3067\u4E0A\u66F8\u304D\u3059\u308B:
71184
71148
  - \`parameterSlug\`: \`"impersonate-email"\`
71185
71149
  - \`options\`: \`[{ value: <ownerEmail>, label: <ownerEmail> }]\`
71186
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u5BFE\u8C61\u60C5\u5831\u3092\u8A18\u9332\u3059\u308B:
71187
- - \`user\`: \u6700\u7D42\u7684\u306B\u8A2D\u5B9A\u3057\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
71188
- - \`calendar\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u540D
71189
- - \`calendarId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
71190
- - \`note\`: \u300CDomain-wide Delegation\u3067 {email} \u306E {calendar} \u306B\u30A2\u30AF\u30BB\u30B9\u300D\u306A\u3069\u306E\u8AAC\u660E
71191
71150
 
71192
71151
  #### \u5236\u7D04
71193
71152
  - **\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u8A2D\u5B9A\u304C\u5FC5\u8981\u3067\u3059**\u3002\`${listCalendarsToolName}\` \u306E \`errors\` \u306B\u6A29\u9650\u30A8\u30E9\u30FC\u304C\u51FA\u308B\u5834\u5408\u3001Google Workspace\u7BA1\u7406\u8005\u306BDomain-wide Delegation\u306E\u8A2D\u5B9A\u78BA\u8A8D\u3092\u4FC3\u3057\u3066\u304F\u3060\u3055\u3044
@@ -71210,11 +71169,6 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
71210
71169
  5. Extract the owner email from the \`label\` of the user's selected calendar, then call \`updateConnectionParameters\` to overwrite \`impersonate-email\` with the final value:
71211
71170
  - \`parameterSlug\`: \`"impersonate-email"\`
71212
71171
  - \`options\`: \`[{ value: <ownerEmail>, label: <ownerEmail> }]\`
71213
- 6. Call \`updateConnectionContext\` to record the target:
71214
- - \`user\`: The final configured email address
71215
- - \`calendar\`: The selected calendar's name
71216
- - \`calendarId\`: The selected calendar ID
71217
- - \`note\`: A description such as "Accessing {email}'s {calendar} via Domain-wide Delegation"
71218
71172
 
71219
71173
  #### Constraints
71220
71174
  - **Domain-wide Delegation must be configured on the service account**. If \`${listCalendarsToolName}\` returns permission errors in the \`errors\` field, ask the user to verify the Domain-wide Delegation setup with their Google Workspace administrator
@@ -71640,10 +71594,6 @@ var googleCalendarOauthOnboarding = new ConnectorOnboarding({
71640
71594
  3. \`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3059:
71641
71595
  - \`parameterSlug\`: \`"calendar-id"\`
71642
71596
  - \`value\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
71643
- 4. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
71644
- - \`calendar\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u540D
71645
- - \`calendarId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
71646
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
71647
71597
 
71648
71598
  #### \u5236\u7D04
71649
71599
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30A4\u30D9\u30F3\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u306E\u307F
@@ -71656,10 +71606,6 @@ var googleCalendarOauthOnboarding = new ConnectorOnboarding({
71656
71606
  3. Call \`updateConnectionParameters\`:
71657
71607
  - \`parameterSlug\`: \`"calendar-id"\`
71658
71608
  - \`value\`: The selected calendar ID
71659
- 4. Call \`updateConnectionContext\`:
71660
- - \`calendar\`: The selected calendar's name
71661
- - \`calendarId\`: The selected calendar ID
71662
- - \`note\`: Brief description of the setup
71663
71609
 
71664
71610
  #### Constraints
71665
71611
  - **Do NOT fetch event data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -72100,7 +72046,9 @@ Authentication is handled automatically via OAuth proxy.`,
72100
72046
  });
72101
72047
  const data = await response.json();
72102
72048
  if (!response.ok) {
72103
- const errorMessage = typeof data?.error === "string" ? data.error : typeof data?.message === "string" ? data.message : `HTTP ${response.status} ${response.statusText}`;
72049
+ const googleError = data?.error && typeof data.error === "object" ? data.error : null;
72050
+ const googleErrorMessage = googleError && typeof googleError.message === "string" ? googleError.status && typeof googleError.status === "string" ? `${googleError.status}: ${googleError.message}` : googleError.message : null;
72051
+ const errorMessage = googleErrorMessage ?? (typeof data?.error === "string" ? data.error : typeof data?.message === "string" ? data.message : `HTTP ${response.status} ${response.statusText}`);
72104
72052
  return { success: false, error: errorMessage };
72105
72053
  }
72106
72054
  return { success: true, status: response.status, data };
@@ -73459,9 +73407,6 @@ var hubspotOnboarding = new ConnectorOnboarding({
73459
73407
  - \`method\`: \`"GET"\`
73460
73408
  - \`path\`: \`"/account-info/v3/details"\`
73461
73409
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
73462
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
73463
- - \`account\`: HubSpot\u30A2\u30AB\u30A6\u30F3\u30C8\u540D\u307E\u305F\u306FID
73464
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
73465
73410
 
73466
73411
  #### \u5236\u7D04
73467
73412
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30D3\u30B8\u30CD\u30B9\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -73472,9 +73417,6 @@ var hubspotOnboarding = new ConnectorOnboarding({
73472
73417
  - \`method\`: \`"GET"\`
73473
73418
  - \`path\`: \`"/account-info/v3/details"\`
73474
73419
  2. If an error is returned, ask the user to check the OAuth connection settings
73475
- 3. Call \`updateConnectionContext\`:
73476
- - \`account\`: HubSpot account name or ID
73477
- - \`note\`: Brief description of the setup
73478
73420
 
73479
73421
  #### Constraints
73480
73422
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -73754,9 +73696,6 @@ var stripeOnboarding = new ConnectorOnboarding({
73754
73696
  - \`method\`: \`"GET"\`
73755
73697
  - \`path\`: \`"/v1/accounts"\`
73756
73698
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
73757
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
73758
- - \`account\`: Stripe\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831
73759
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
73760
73699
 
73761
73700
  #### \u5236\u7D04
73762
73701
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u6C7A\u6E08\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -73767,9 +73706,6 @@ var stripeOnboarding = new ConnectorOnboarding({
73767
73706
  - \`method\`: \`"GET"\`
73768
73707
  - \`path\`: \`"/v1/accounts"\`
73769
73708
  2. If an error is returned, ask the user to check the OAuth connection settings
73770
- 3. Call \`updateConnectionContext\`:
73771
- - \`account\`: Stripe account info
73772
- - \`note\`: Brief description of the setup
73773
73709
 
73774
73710
  #### Constraints
73775
73711
  - **Do NOT read payment data during setup**. Only the metadata request specified in the steps above is allowed
@@ -74050,8 +73986,6 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
74050
73986
  - \`method\`: \`"GET"\`
74051
73987
  - \`path\`: \`"/v1/balance"\`
74052
73988
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BAPI\u30AD\u30FC\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B\uFF08Secret API Key\u307E\u305F\u306FRestricted API Key\u304C\u6B63\u3057\u304F\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u304B\uFF09
74053
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
74054
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
74055
73989
 
74056
73990
  #### \u5236\u7D04
74057
73991
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u6C7A\u6E08\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -74062,8 +73996,6 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
74062
73996
  - \`method\`: \`"GET"\`
74063
73997
  - \`path\`: \`"/v1/balance"\`
74064
73998
  2. If an error is returned, ask the user to check the API key settings (verify that the Secret API Key or Restricted API Key is configured correctly)
74065
- 3. Call \`updateConnectionContext\`:
74066
- - \`note\`: Brief description of the setup
74067
73999
 
74068
74000
  #### Constraints
74069
74001
  - **Do NOT read payment data during setup**. Only the metadata request specified in the steps above is allowed
@@ -74088,7 +74020,7 @@ var stripeApiKeyConnector = new ConnectorPlugin({
74088
74020
  description: "Connect to Stripe for payment, customer, and subscription data using a Secret API Key or Restricted API Key.",
74089
74021
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2QNK0u2doqp41uL0POS4Ks/7a92367e2388ec77c7f4ada143606f9a/stripe.jpeg",
74090
74022
  parameters: parameters22,
74091
- releaseFlag: { dev1: true, dev2: false, prod: false },
74023
+ releaseFlag: { dev1: true, dev2: true, prod: true },
74092
74024
  onboarding: stripeApiKeyOnboarding,
74093
74025
  systemPrompt: {
74094
74026
  en: `### Tools
@@ -74373,10 +74305,6 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74373
74305
  - \`method\`: \`"GET"\`
74374
74306
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74375
74307
  5. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306B\u30D9\u30FC\u30B9\u306E\u5171\u6709\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
74376
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
74377
- - \`base\`: \u30D9\u30FC\u30B9ID
74378
- - \`tables\`: \u30C6\u30FC\u30D6\u30EB\u540D\u4E00\u89A7\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09
74379
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
74380
74308
 
74381
74309
  #### \u5236\u7D04
74382
74310
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30C6\u30FC\u30D6\u30EB\u306E\u30EC\u30B3\u30FC\u30C9\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -74392,10 +74320,6 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74392
74320
  - \`method\`: \`"GET"\`
74393
74321
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74394
74322
  5. If an error is returned, ask the user to check the base sharing settings
74395
- 6. Call \`updateConnectionContext\`:
74396
- - \`base\`: The base ID
74397
- - \`tables\`: Table names (comma-separated)
74398
- - \`note\`: Brief description of the setup
74399
74323
 
74400
74324
  #### Constraints
74401
74325
  - **Do NOT read table record data during setup**. Only the metadata request specified in the steps above is allowed
@@ -74979,7 +74903,7 @@ var kintoneApiTokenConnector = new ConnectorPlugin({
74979
74903
  description: "Connect to kintone for business application data retrieval and analytics using API token authentication.",
74980
74904
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/76nPGMJFZkMFE3UQNo2JFy/e71dc5f5d5cec1306ce0e17aafbfd9f0/kintone.png",
74981
74905
  parameters: parameters25,
74982
- releaseFlag: { dev1: true, dev2: false, prod: false },
74906
+ releaseFlag: { dev1: true, dev2: true, prod: true },
74983
74907
  onboarding: kintoneApiTokenOnboarding,
74984
74908
  systemPrompt: {
74985
74909
  en: `### Tools
@@ -76317,7 +76241,7 @@ var amplitudeConnector = new ConnectorPlugin({
76317
76241
  description: "Connect to Amplitude for product analytics and user behavior data.",
76318
76242
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2UBJSdRlFJaLq52WUCTBEB/308b59b374cf6c662ac70989860bffd7/amplitude-icon.svg",
76319
76243
  parameters: parameters32,
76320
- releaseFlag: { dev1: true, dev2: false, prod: false },
76244
+ releaseFlag: { dev1: true, dev2: true, prod: true },
76321
76245
  onboarding: amplitudeOnboarding,
76322
76246
  systemPrompt: {
76323
76247
  en: `### Tools
@@ -76570,7 +76494,7 @@ var attioConnector = new ConnectorPlugin({
76570
76494
  description: "Connect to Attio for CRM data and relationship intelligence.",
76571
76495
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2qqx99vvXJojUM3tSrSWPX/1e7c35e13da6b365b8b475c1effe568f/attio.svg",
76572
76496
  parameters: parameters33,
76573
- releaseFlag: { dev1: true, dev2: false, prod: false },
76497
+ releaseFlag: { dev1: true, dev2: true, prod: true },
76574
76498
  onboarding: attioOnboarding,
76575
76499
  systemPrompt: {
76576
76500
  en: `### Tools
@@ -77302,9 +77226,6 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
77302
77226
  - \`method\`: \`"GET"\`
77303
77227
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77304
77228
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
77305
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
77306
- - \`shop\`: Shopify\u30B7\u30E7\u30C3\u30D7\u60C5\u5831
77307
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
77308
77229
 
77309
77230
  #### \u5236\u7D04
77310
77231
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30D3\u30B8\u30CD\u30B9\u30C7\u30FC\u30BF\uFF08\u6CE8\u6587\u3001\u9867\u5BA2\u306A\u3069\uFF09\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -77315,9 +77236,6 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
77315
77236
  - \`method\`: \`"GET"\`
77316
77237
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77317
77238
  2. If an error is returned, ask the user to check the OAuth connection settings
77318
- 3. Call \`updateConnectionContext\`:
77319
- - \`shop\`: Shopify shop info
77320
- - \`note\`: Brief description of the setup
77321
77239
 
77322
77240
  #### Constraints
77323
77241
  - **Do NOT read business data (orders, customers, etc.) during setup**. Only the metadata request specified in the steps above is allowed
@@ -77587,7 +77505,7 @@ var hubspotConnector = new ConnectorPlugin({
77587
77505
  description: "Connect to HubSpot CRM for contacts, deals, companies, and marketing data using a Personal Access Key.",
77588
77506
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5UcSkKkzhUMA4RsM45ynuo/43b967e36915ca0fc5d277684b204320/hubspot.svg",
77589
77507
  parameters: parameters36,
77590
- releaseFlag: { dev1: true, dev2: false, prod: false },
77508
+ releaseFlag: { dev1: true, dev2: true, prod: true },
77591
77509
  onboarding: hubspotOnboarding2,
77592
77510
  systemPrompt: {
77593
77511
  en: `### Tools
@@ -77855,7 +77773,7 @@ var jiraConnector = new ConnectorPlugin({
77855
77773
  description: "Connect to Jira Cloud for issue tracking, project management, and workflow data retrieval using API token authentication.",
77856
77774
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5zt4yjb36szSPPkCECYlPL/bc3e7223dc84fb16a1cce53a80f5afcc/jira.png",
77857
77775
  parameters: parameters37,
77858
- releaseFlag: { dev1: true, dev2: false, prod: false },
77776
+ releaseFlag: { dev1: true, dev2: true, prod: true },
77859
77777
  onboarding: jiraOnboarding,
77860
77778
  systemPrompt: {
77861
77779
  en: `### Tools
@@ -78130,7 +78048,7 @@ var linearConnector = new ConnectorPlugin({
78130
78048
  description: "Connect to Linear for project management data \u2014 issues, projects, teams, cycles, and more.",
78131
78049
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oR77h6TeniXGdmnp2P2LX/a2ac8630ae52d164363adb0c695d9f0b/linear.webp",
78132
78050
  parameters: parameters38,
78133
- releaseFlag: { dev1: true, dev2: false, prod: false },
78051
+ releaseFlag: { dev1: true, dev2: true, prod: true },
78134
78052
  onboarding: linearOnboarding,
78135
78053
  systemPrompt: {
78136
78054
  en: `### Tools
@@ -78392,7 +78310,7 @@ var asanaConnector = new ConnectorPlugin({
78392
78310
  description: "Connect to Asana for project management, task tracking, and team collaboration data.",
78393
78311
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3eIdaoqzIIZs2Md0OoDJMf/2fa66e0841adb985da4d3120466f3ec4/asana-icon.png",
78394
78312
  parameters: parameters39,
78395
- releaseFlag: { dev1: true, dev2: false, prod: false },
78313
+ releaseFlag: { dev1: true, dev2: true, prod: true },
78396
78314
  onboarding: asanaOnboarding,
78397
78315
  systemPrompt: {
78398
78316
  en: `### Tools
@@ -78717,7 +78635,7 @@ var clickhouseConnector = new ConnectorPlugin({
78717
78635
  description: "Connect to ClickHouse for high-performance columnar analytics and real-time data processing.",
78718
78636
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/MencimqP92UmucqstLl51/d9f2b6160206f5454b26e223a763ab8f/clickhouse.png",
78719
78637
  parameters: parameters40,
78720
- releaseFlag: { dev1: true, dev2: false, prod: false },
78638
+ releaseFlag: { dev1: true, dev2: true, prod: true },
78721
78639
  onboarding: clickhouseOnboarding,
78722
78640
  systemPrompt: {
78723
78641
  en: `### Tools
@@ -79125,7 +79043,7 @@ var mongodbConnector = new ConnectorPlugin({
79125
79043
  description: "Connect to MongoDB for document-oriented data storage and querying.",
79126
79044
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/48JSUx9HE6oSa9JrHGg2E1/12b4cac65924cac3641d4bafcef37dbe/mongodb-icon.webp",
79127
79045
  parameters: parameters41,
79128
- releaseFlag: { dev1: true, dev2: false, prod: false },
79046
+ releaseFlag: { dev1: true, dev2: true, prod: true },
79129
79047
  onboarding: mongodbOnboarding,
79130
79048
  systemPrompt: {
79131
79049
  en: `### Tools
@@ -79309,7 +79227,7 @@ var notionConnector = new ConnectorPlugin({
79309
79227
  description: "Connect to Notion to query databases, pages, and workspace content using an Internal Integration Token.",
79310
79228
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
79311
79229
  parameters: parameters42,
79312
- releaseFlag: { dev1: true, dev2: false, prod: false },
79230
+ releaseFlag: { dev1: true, dev2: true, prod: true },
79313
79231
  onboarding: notionOnboarding,
79314
79232
  systemPrompt: {
79315
79233
  en: `### Tools
@@ -79580,9 +79498,6 @@ var notionOauthOnboarding = new ConnectorOnboarding({
79580
79498
  - \`method\`: \`"GET"\`
79581
79499
  - \`path\`: \`"/users/me"\`
79582
79500
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
79583
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
79584
- - \`account\`: Notion\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u540D\u307E\u305F\u306F\u30DC\u30C3\u30C8\u540D
79585
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
79586
79501
 
79587
79502
  #### \u5236\u7D04
79588
79503
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30D3\u30B8\u30CD\u30B9\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -79593,9 +79508,6 @@ var notionOauthOnboarding = new ConnectorOnboarding({
79593
79508
  - \`method\`: \`"GET"\`
79594
79509
  - \`path\`: \`"/users/me"\`
79595
79510
  2. If an error is returned, ask the user to check the OAuth connection settings
79596
- 3. Call \`updateConnectionContext\`:
79597
- - \`account\`: Notion workspace name or bot name
79598
- - \`note\`: Brief description of the setup
79599
79511
 
79600
79512
  #### Constraints
79601
79513
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -79625,7 +79537,7 @@ var notionOauthConnector = new ConnectorPlugin({
79625
79537
  description: "Connect to Notion to query databases, pages, and workspace content using OAuth.",
79626
79538
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
79627
79539
  parameters: parameters43,
79628
- releaseFlag: { dev1: true, dev2: false, prod: false },
79540
+ releaseFlag: { dev1: true, dev2: true, prod: true },
79629
79541
  onboarding: notionOauthOnboarding,
79630
79542
  proxyPolicy: {
79631
79543
  allowlist: [
@@ -79869,10 +79781,6 @@ var metaAdsOnboarding = new ConnectorOnboarding({
79869
79781
  - \`parameterSlug\`: \`"ad-account-id"\`
79870
79782
  - \`options\`: \u5E83\u544A\u30A2\u30AB\u30A6\u30F3\u30C8\u4E00\u89A7\u3002\u5404 option \u306E \`label\` \u306F \`\u30A2\u30AB\u30A6\u30F3\u30C8\u540D (id: \u30A2\u30AB\u30A6\u30F3\u30C8ID)\` \u306E\u5F62\u5F0F\u3001\`value\` \u306F\u30A2\u30AB\u30A6\u30F3\u30C8ID
79871
79783
  4. \u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E \`label\` \u304C\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u3057\u3066\u5C4A\u304F\u306E\u3067\u3001\u6B21\u306E\u30B9\u30C6\u30C3\u30D7\u306B\u9032\u3080
79872
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
79873
- - \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
79874
- - \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
79875
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
79876
79784
 
79877
79785
  #### \u5236\u7D04
79878
79786
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30EC\u30DD\u30FC\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u306E\u307F
@@ -79885,10 +79793,6 @@ var metaAdsOnboarding = new ConnectorOnboarding({
79885
79793
  - \`parameterSlug\`: \`"ad-account-id"\`
79886
79794
  - \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
79887
79795
  4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
79888
- 5. Call \`updateConnectionContext\`:
79889
- - \`adAccount\`: The selected account's display name
79890
- - \`adAccountId\`: The selected account ID
79891
- - \`note\`: Brief description of the setup
79892
79796
 
79893
79797
  #### Constraints
79894
79798
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -80278,10 +80182,6 @@ var metaAdsOauthOnboarding = new ConnectorOnboarding({
80278
80182
  - \`parameterSlug\`: \`"ad-account-id"\`
80279
80183
  - \`options\`: \u5E83\u544A\u30A2\u30AB\u30A6\u30F3\u30C8\u4E00\u89A7\u3002\u5404 option \u306E \`label\` \u306F \`\u30A2\u30AB\u30A6\u30F3\u30C8\u540D (id: \u30A2\u30AB\u30A6\u30F3\u30C8ID)\` \u306E\u5F62\u5F0F\u3001\`value\` \u306F\u30A2\u30AB\u30A6\u30F3\u30C8ID
80280
80184
  4. \u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E \`label\` \u304C\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u3057\u3066\u5C4A\u304F\u306E\u3067\u3001\u6B21\u306E\u30B9\u30C6\u30C3\u30D7\u306B\u9032\u3080
80281
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
80282
- - \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
80283
- - \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
80284
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
80285
80185
 
80286
80186
  #### \u5236\u7D04
80287
80187
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30EC\u30DD\u30FC\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u306E\u307F
@@ -80294,10 +80194,6 @@ var metaAdsOauthOnboarding = new ConnectorOnboarding({
80294
80194
  - \`parameterSlug\`: \`"ad-account-id"\`
80295
80195
  - \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
80296
80196
  4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
80297
- 5. Call \`updateConnectionContext\`:
80298
- - \`adAccount\`: The selected account's display name
80299
- - \`adAccountId\`: The selected account ID
80300
- - \`note\`: Brief description of the setup
80301
80197
 
80302
80198
  #### Constraints
80303
80199
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -80740,10 +80636,6 @@ var tiktokAdsOnboarding = new ConnectorOnboarding({
80740
80636
  - \`parameterSlug\`: \`"advertiser-id"\`
80741
80637
  - \`options\`: \u5E83\u544A\u4E3B\u4E00\u89A7\u3002\u5404 option \u306E \`label\` \u306F \`\u5E83\u544A\u4E3B\u540D (id: \u5E83\u544A\u4E3BID)\` \u306E\u5F62\u5F0F\u3001\`value\` \u306F\u5E83\u544A\u4E3BID
80742
80638
  4. \u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u5E83\u544A\u4E3B\u306E \`label\` \u304C\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u3057\u3066\u5C4A\u304F\u306E\u3067\u3001\u6B21\u306E\u30B9\u30C6\u30C3\u30D7\u306B\u9032\u3080
80743
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
80744
- - \`advertiser\`: \u9078\u629E\u3055\u308C\u305F\u5E83\u544A\u4E3B\u306E\u8868\u793A\u540D
80745
- - \`advertiserId\`: \u9078\u629E\u3055\u308C\u305F\u5E83\u544A\u4E3BID
80746
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
80747
80639
 
80748
80640
  #### \u5236\u7D04
80749
80641
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30EC\u30DD\u30FC\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u306E\u307F
@@ -80756,10 +80648,6 @@ var tiktokAdsOnboarding = new ConnectorOnboarding({
80756
80648
  - \`parameterSlug\`: \`"advertiser-id"\`
80757
80649
  - \`options\`: The advertiser list. Each option's \`label\` should be \`Advertiser Name (id: advertiserId)\`, \`value\` should be the advertiser ID
80758
80650
  4. The \`label\` of the user's selected advertiser will arrive as a message. Proceed to the next step
80759
- 5. Call \`updateConnectionContext\`:
80760
- - \`advertiser\`: The selected advertiser's display name
80761
- - \`advertiserId\`: The selected advertiser ID
80762
- - \`note\`: Brief description of the setup
80763
80651
 
80764
80652
  #### Constraints
80765
80653
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -81238,7 +81126,7 @@ var mailchimpConnector = new ConnectorPlugin({
81238
81126
  description: "Connect to Mailchimp for email marketing, audiences, campaigns, and analytics.",
81239
81127
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19Rac6B8eGiLpQb4lKMbG3/10f567f85572aeb16f2ee6aaa6602987/mailchimp.png",
81240
81128
  parameters: parameters47,
81241
- releaseFlag: { dev1: true, dev2: false, prod: false },
81129
+ releaseFlag: { dev1: true, dev2: true, prod: true },
81242
81130
  onboarding: mailchimpOnboarding,
81243
81131
  systemPrompt: {
81244
81132
  en: `### Tools
@@ -81884,7 +81772,7 @@ var customerioConnector = new ConnectorPlugin({
81884
81772
  description: "Connect to Customer.io App API for reading customer data, managing campaigns, segments, and sending transactional messages.",
81885
81773
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/nngohabT7oHDIgQYAVBpz/6f6c7662ef4692eb9869e3e69dd57114/customerio.png",
81886
81774
  parameters: parameters49,
81887
- releaseFlag: { dev1: true, dev2: false, prod: false },
81775
+ releaseFlag: { dev1: true, dev2: true, prod: true },
81888
81776
  onboarding: customerioOnboarding,
81889
81777
  systemPrompt: {
81890
81778
  en: `### Tools
@@ -82205,10 +82093,6 @@ var gmailOnboarding = new ConnectorOnboarding({
82205
82093
  5. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82206
82094
  - \`method\`: \`"GET"\`
82207
82095
  - \`path\`: \`"/me/labels"\`
82208
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
82209
- - \`email\`: \u8A2D\u5B9A\u3057\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
82210
- - \`labels\`: \u4E3B\u8981\u306A\u30E9\u30D9\u30EB\u540D\u4E00\u89A7\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3001INBOX, SENT, DRAFT, SPAM, TRASH\u7B49\u306E\u30B7\u30B9\u30C6\u30E0\u30E9\u30D9\u30EB\u3092\u542B\u3080\uFF09
82211
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
82212
82096
 
82213
82097
  #### \u5236\u7D04
82214
82098
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u672C\u6587\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u53D6\u5F97\u3068\u30E9\u30D9\u30EB\u4E00\u89A7\u53D6\u5F97\u306E\u307F
@@ -82232,10 +82116,6 @@ var gmailOnboarding = new ConnectorOnboarding({
82232
82116
  5. Call \`${requestToolName7}\` to get the label list:
82233
82117
  - \`method\`: \`"GET"\`
82234
82118
  - \`path\`: \`"/me/labels"\`
82235
- 6. Call \`updateConnectionContext\`:
82236
- - \`email\`: The configured email address
82237
- - \`labels\`: Key label names (comma-separated, including system labels like INBOX, SENT, DRAFT, SPAM, TRASH)
82238
- - \`note\`: Brief description of the setup
82239
82119
 
82240
82120
  #### Constraints
82241
82121
  - **Do NOT read message bodies during setup**. Only the profile and label list requests specified above are allowed
@@ -82260,7 +82140,7 @@ var gmailConnector = new ConnectorPlugin({
82260
82140
  description: "Connect to Gmail for email data access using a service account with domain-wide delegation. Read-only access to messages, threads, and labels.",
82261
82141
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4V3rfaSc1ksFIt2eHBNIwJ/7f3be41a154a6d96dcf229ed0e5858c9/Gmail_icon__2020_.svg.png",
82262
82142
  parameters: parameters50,
82263
- releaseFlag: { dev1: true, dev2: false, prod: false },
82143
+ releaseFlag: { dev1: true, dev2: true, prod: true },
82264
82144
  onboarding: gmailOnboarding,
82265
82145
  systemPrompt: {
82266
82146
  en: `### Tools
@@ -82597,10 +82477,6 @@ var gmailOnboarding2 = new ConnectorOnboarding({
82597
82477
  3. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82598
82478
  - \`method\`: \`"GET"\`
82599
82479
  - \`path\`: \`"/me/labels"\`
82600
- 4. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
82601
- - \`email\`: \u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
82602
- - \`labels\`: \u4E3B\u8981\u306A\u30E9\u30D9\u30EB\u540D\u4E00\u89A7\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3001INBOX, SENT, DRAFT, SPAM, TRASH\u7B49\u306E\u30B7\u30B9\u30C6\u30E0\u30E9\u30D9\u30EB\u3092\u542B\u3080\uFF09
82603
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
82604
82480
 
82605
82481
  #### \u5236\u7D04
82606
82482
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u672C\u6587\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u53D6\u5F97\u3068\u30E9\u30D9\u30EB\u4E00\u89A7\u53D6\u5F97\u306E\u307F
@@ -82614,10 +82490,6 @@ var gmailOnboarding2 = new ConnectorOnboarding({
82614
82490
  3. Call \`${requestToolName8}\` to get the label list:
82615
82491
  - \`method\`: \`"GET"\`
82616
82492
  - \`path\`: \`"/me/labels"\`
82617
- 4. Call \`updateConnectionContext\`:
82618
- - \`email\`: The user's email address
82619
- - \`labels\`: Key label names (comma-separated, including system labels like INBOX, SENT, DRAFT, SPAM, TRASH)
82620
- - \`note\`: Brief description of the setup
82621
82493
 
82622
82494
  #### Constraints
82623
82495
  - **Do NOT read message bodies during setup**. Only the profile and label list requests specified above are allowed
@@ -82973,10 +82845,6 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
82973
82845
  - \`parameterSlug\`: \`"ad-account-id"\`
82974
82846
  - \`options\`: \u5E83\u544A\u30A2\u30AB\u30A6\u30F3\u30C8\u4E00\u89A7\u3002\u5404 option \u306E \`label\` \u306F \`\u30A2\u30AB\u30A6\u30F3\u30C8\u540D (id: \u30A2\u30AB\u30A6\u30F3\u30C8ID)\` \u306E\u5F62\u5F0F\u3001\`value\` \u306F\u30A2\u30AB\u30A6\u30F3\u30C8ID
82975
82847
  4. \u30E6\u30FC\u30B6\u30FC\u304C\u9078\u629E\u3057\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E \`label\` \u304C\u30E1\u30C3\u30BB\u30FC\u30B8\u3068\u3057\u3066\u5C4A\u304F\u306E\u3067\u3001\u6B21\u306E\u30B9\u30C6\u30C3\u30D7\u306B\u9032\u3080
82976
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
82977
- - \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
82978
- - \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
82979
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
82980
82848
 
82981
82849
  #### \u5236\u7D04
82982
82850
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30EC\u30DD\u30FC\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u306E\u307F
@@ -82989,10 +82857,6 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
82989
82857
  - \`parameterSlug\`: \`"ad-account-id"\`
82990
82858
  - \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
82991
82859
  4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
82992
- 5. Call \`updateConnectionContext\`:
82993
- - \`adAccount\`: The selected account's display name
82994
- - \`adAccountId\`: The selected account ID
82995
- - \`note\`: Brief description of the setup
82996
82860
 
82997
82861
  #### Constraints
82998
82862
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -83529,7 +83393,7 @@ var zendeskConnector = new ConnectorPlugin({
83529
83393
  description: "Connect to Zendesk Support for tickets, users, organizations, and customer service data using an API token.",
83530
83394
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7e9Q7PwV6MJRJMj543m2gl/55385fae903ccfa1599e35be9d3516aa/zendesk-icon.svg",
83531
83395
  parameters: parameters53,
83532
- releaseFlag: { dev1: true, dev2: false, prod: false },
83396
+ releaseFlag: { dev1: true, dev2: true, prod: true },
83533
83397
  onboarding: zendeskOnboarding,
83534
83398
  systemPrompt: {
83535
83399
  en: `### Tools
@@ -83835,9 +83699,6 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
83835
83699
  - \`method\`: \`"GET"\`
83836
83700
  - \`path\`: \`"/api/v2/account/settings.json"\`
83837
83701
  2. If an error is returned, ask the user to check the OAuth connection settings
83838
- 3. Call \`updateConnectionContext\`:
83839
- - \`account\`: Zendesk subdomain or account name
83840
- - \`note\`: Brief description of the setup
83841
83702
 
83842
83703
  #### Constraints
83843
83704
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -83848,9 +83709,6 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
83848
83709
  - \`method\`: \`"GET"\`
83849
83710
  - \`path\`: \`"/api/v2/account/settings.json"\`
83850
83711
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
83851
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
83852
- - \`account\`: Zendesk\u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\u307E\u305F\u306F\u30A2\u30AB\u30A6\u30F3\u30C8\u540D
83853
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
83854
83712
 
83855
83713
  #### \u5236\u7D04
83856
83714
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30D3\u30B8\u30CD\u30B9\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -84152,7 +84010,7 @@ var intercomConnector = new ConnectorPlugin({
84152
84010
  description: "Connect to Intercom for contacts, conversations, companies, and customer engagement data using an Access Token.",
84153
84011
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/sb2cRMGClpId0LKiSqsok/ae90a0849f21ffe3faf73e04a5676b45/intercom.svg",
84154
84012
  parameters: parameters55,
84155
- releaseFlag: { dev1: true, dev2: false, prod: false },
84013
+ releaseFlag: { dev1: true, dev2: true, prod: true },
84156
84014
  onboarding: intercomOnboarding,
84157
84015
  systemPrompt: {
84158
84016
  en: `### Tools
@@ -84481,9 +84339,6 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
84481
84339
  - \`method\`: \`"GET"\`
84482
84340
  - \`path\`: \`"/me"\`
84483
84341
  2. If an error is returned, ask the user to check the OAuth connection settings
84484
- 3. Call \`updateConnectionContext\`:
84485
- - \`account\`: Intercom workspace name or admin email
84486
- - \`note\`: Brief description of the setup
84487
84342
 
84488
84343
  #### Constraints
84489
84344
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -84494,9 +84349,6 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
84494
84349
  - \`method\`: \`"GET"\`
84495
84350
  - \`path\`: \`"/me"\`
84496
84351
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
84497
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
84498
- - \`account\`: Intercom\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u540D\u307E\u305F\u306F\u7BA1\u7406\u8005\u30E1\u30FC\u30EB
84499
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
84500
84352
 
84501
84353
  #### \u5236\u7D04
84502
84354
  - **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30D3\u30B8\u30CD\u30B9\u30C7\u30FC\u30BF\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3053\u3068**\u3002\u5B9F\u884C\u3057\u3066\u3088\u3044\u306E\u306F\u4E0A\u8A18\u624B\u9806\u3067\u6307\u5B9A\u3055\u308C\u305F\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u307F
@@ -84872,7 +84724,7 @@ var mixpanelConnector = new ConnectorPlugin({
84872
84724
  description: "Connect to Mixpanel for product analytics, event tracking, and user behavior analysis.",
84873
84725
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7ykz0vNRjMqvTVrxS8wsj1/b2cd795be5b373877dee77cc6147c758/images__3_.png",
84874
84726
  parameters: parameters57,
84875
- releaseFlag: { dev1: true, dev2: false, prod: false },
84727
+ releaseFlag: { dev1: true, dev2: true, prod: true },
84876
84728
  onboarding: mixpanelOnboarding,
84877
84729
  systemPrompt: {
84878
84730
  en: `### Tools
@@ -85367,7 +85219,7 @@ var backlogConnector = new ConnectorPlugin({
85367
85219
  description: "Connect to Nulab Backlog for project management, issue tracking, and wiki data retrieval using API key authentication.",
85368
85220
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6KcVBGf3mUHnuCOQgQMvtT/e8558c7990e40e3be46948e9476190fb/backlog-favicon.svg",
85369
85221
  parameters: parameters59,
85370
- releaseFlag: { dev1: true, dev2: true, prod: false },
85222
+ releaseFlag: { dev1: true, dev2: true, prod: true },
85371
85223
  onboarding: backlogOnboarding,
85372
85224
  systemPrompt: {
85373
85225
  en: `### Tools
@@ -85805,7 +85657,7 @@ var gammaConnector = new ConnectorPlugin({
85805
85657
  description: "Connect to Gamma for AI-powered presentation, document, webpage, and social post generation.",
85806
85658
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/KoMGPpPcgtB9oDYe1OBjS/1ba7eb061c4497106bf6d249866dc471/gamma.svg",
85807
85659
  parameters: parameters60,
85808
- releaseFlag: { dev1: true, dev2: false, prod: false },
85660
+ releaseFlag: { dev1: true, dev2: true, prod: true },
85809
85661
  onboarding: gammaOnboarding,
85810
85662
  systemPrompt: {
85811
85663
  en: `### Tools
@@ -86085,7 +85937,7 @@ var sentryConnector = new ConnectorPlugin({
86085
85937
  description: "Connect to Sentry for error tracking and performance monitoring data.",
86086
85938
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4B8ZEGFGjTeMWNnXQb1dAL/ac10f813f02353f5b0cbe64fb5c06d8f/sentry.svg",
86087
85939
  parameters: parameters61,
86088
- releaseFlag: { dev1: true, dev2: false, prod: false },
85940
+ releaseFlag: { dev1: true, dev2: true, prod: true },
86089
85941
  onboarding: sentryOnboarding,
86090
85942
  systemPrompt: {
86091
85943
  en: `### Tools
@@ -86289,6 +86141,713 @@ await sentry.updateIssue("12345", { status: "resolved" });
86289
86141
  }
86290
86142
  });
86291
86143
 
86144
+ // ../connectors/src/connectors/salesforce/setup.ts
86145
+ var salesforceOnboarding = new ConnectorOnboarding({
86146
+ connectionSetupInstructions: {
86147
+ en: `#### Create a Connected App in Salesforce
86148
+ 1. In Salesforce Setup, go to App Manager \u2192 New Connected App
86149
+ 2. Under API (Enable OAuth Settings), check "Enable OAuth Settings"
86150
+ 3. Add OAuth scopes: "Manage user data via APIs (api)" and "Perform requests at any time (refresh_token, offline_access)"
86151
+ 4. Save and note the Consumer Key (client_id) and Consumer Secret (client_secret)
86152
+
86153
+ #### Allow Username-Password Flow
86154
+ 1. Go to Setup \u2192 Identity \u2192 OAuth and OpenID Connect Settings
86155
+ 2. Enable "Allow OAuth Username-Password Flows"
86156
+
86157
+ #### Reset your Security Token
86158
+ 1. Go to Settings \u2192 My Personal Information \u2192 Reset My Security Token
86159
+ 2. Salesforce emails you a new security token \u2014 append it to your password when entering the Password parameter (password + securityToken)
86160
+
86161
+ #### Sandbox vs Production
86162
+ - Leave Use Sandbox as "false" (or empty) to connect to production (login.salesforce.com)
86163
+ - Set Use Sandbox to "true" to connect to a sandbox (test.salesforce.com)`,
86164
+ ja: `#### Salesforce \u3067 Connected App \u3092\u4F5C\u6210
86165
+ 1. Setup \u2192 App Manager \u2192 New Connected App
86166
+ 2. API (Enable OAuth Settings) \u30BB\u30AF\u30B7\u30E7\u30F3\u3067 "Enable OAuth Settings" \u3092\u6709\u52B9\u5316
86167
+ 3. OAuth \u30B9\u30B3\u30FC\u30D7\u306B "Manage user data via APIs (api)" \u3068 "Perform requests at any time (refresh_token, offline_access)" \u3092\u8FFD\u52A0
86168
+ 4. \u4FDD\u5B58\u5F8C\u3001Consumer Key (client_id) \u3068 Consumer Secret (client_secret) \u3092\u63A7\u3048\u308B
86169
+
86170
+ #### Username-Password Flow \u3092\u8A31\u53EF
86171
+ 1. Setup \u2192 Identity \u2192 OAuth and OpenID Connect Settings
86172
+ 2. "Allow OAuth Username-Password Flows" \u3092\u6709\u52B9\u5316
86173
+
86174
+ #### Security Token \u306E\u767A\u884C
86175
+ 1. \u500B\u4EBA\u8A2D\u5B9A \u2192 My Personal Information \u2192 Reset My Security Token
86176
+ 2. Salesforce \u304B\u3089\u9001\u3089\u308C\u308B\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30C8\u30FC\u30AF\u30F3\u3092\u30D1\u30B9\u30EF\u30FC\u30C9\u306B\u9023\u7D50\u3057\u3066\u5165\u529B\uFF08password + securityToken\uFF09
86177
+
86178
+ #### Sandbox / Production
86179
+ - \u672C\u756A (login.salesforce.com) \u306E\u5834\u5408: Use Sandbox \u3092 "false" \u307E\u305F\u306F\u672A\u5165\u529B
86180
+ - Sandbox (test.salesforce.com) \u306E\u5834\u5408: Use Sandbox \u3092 "true" \u306B\u8A2D\u5B9A`
86181
+ },
86182
+ dataOverviewInstructions: {
86183
+ en: `1. Call salesforce_request with GET /services/data/v60.0/sobjects/ to list available sObjects (standard + custom)
86184
+ 2. Call salesforce_request with GET /services/data/v60.0/sobjects/Account/describe to inspect Account fields; repeat for Contact, Opportunity, Lead as needed
86185
+ 3. Run a sample SOQL query: GET /services/data/v60.0/query?q=SELECT+Id,Name,Industry+FROM+Account+LIMIT+5 to verify access and explore data`,
86186
+ ja: `1. salesforce_request \u3067 GET /services/data/v60.0/sobjects/ \u3092\u547C\u3073\u51FA\u3057\u3001\u5229\u7528\u53EF\u80FD\u306A sObject\uFF08\u6A19\u6E96 + \u30AB\u30B9\u30BF\u30E0\uFF09\u3092\u4E00\u89A7\u53D6\u5F97
86187
+ 2. salesforce_request \u3067 GET /services/data/v60.0/sobjects/Account/describe \u3092\u547C\u3073\u51FA\u3057 Account \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u78BA\u8A8D\u3002Contact / Opportunity / Lead \u306A\u3069\u5FC5\u8981\u306A sObject \u306B\u5BFE\u3057\u3066\u540C\u69D8\u306B\u5B9F\u884C
86188
+ 3. \u30B5\u30F3\u30D7\u30EB SOQL \u3092\u5B9F\u884C: GET /services/data/v60.0/query?q=SELECT+Id,Name,Industry+FROM+Account+LIMIT+5 \u3067\u30A2\u30AF\u30BB\u30B9\u53EF\u5426\u3068\u30C7\u30FC\u30BF\u69CB\u9020\u3092\u78BA\u8A8D`
86189
+ }
86190
+ });
86191
+
86192
+ // ../connectors/src/connectors/salesforce/parameters.ts
86193
+ var parameters62 = {
86194
+ username: new ParameterDefinition({
86195
+ slug: "username",
86196
+ name: "Username",
86197
+ description: "Your Salesforce account username (the email you use to sign in).",
86198
+ envVarBaseKey: "SALESFORCE_USERNAME",
86199
+ type: "text",
86200
+ secret: false,
86201
+ required: true
86202
+ }),
86203
+ password: new ParameterDefinition({
86204
+ slug: "password",
86205
+ name: "Password",
86206
+ description: "Your Salesforce account password concatenated with your security token (password + securityToken). The security token is emailed to you when you reset it from Settings \u2192 My Personal Information \u2192 Reset My Security Token.",
86207
+ envVarBaseKey: "SALESFORCE_PASSWORD",
86208
+ type: "text",
86209
+ secret: true,
86210
+ required: true
86211
+ }),
86212
+ clientId: new ParameterDefinition({
86213
+ slug: "client-id",
86214
+ name: "Consumer Key",
86215
+ description: "The Consumer Key (client_id) of your Salesforce Connected App. Enable OAuth Settings and 'Allow OAuth Username-Password Flows' in your org's identity settings.",
86216
+ envVarBaseKey: "SALESFORCE_CLIENT_ID",
86217
+ type: "text",
86218
+ secret: false,
86219
+ required: true
86220
+ }),
86221
+ clientSecret: new ParameterDefinition({
86222
+ slug: "client-secret",
86223
+ name: "Consumer Secret",
86224
+ description: "The Consumer Secret (client_secret) of your Salesforce Connected App.",
86225
+ envVarBaseKey: "SALESFORCE_CLIENT_SECRET",
86226
+ type: "text",
86227
+ secret: true,
86228
+ required: true
86229
+ }),
86230
+ isSandbox: new ParameterDefinition({
86231
+ slug: "is-sandbox",
86232
+ name: "Use Sandbox",
86233
+ description: 'Set to "true" to authenticate against a Salesforce sandbox (test.salesforce.com) instead of production (login.salesforce.com). Defaults to "false".',
86234
+ envVarBaseKey: "SALESFORCE_IS_SANDBOX",
86235
+ type: "text",
86236
+ secret: false,
86237
+ required: false
86238
+ })
86239
+ };
86240
+
86241
+ // ../connectors/src/connectors/salesforce/tools/request.ts
86242
+ import { z as z77 } from "zod";
86243
+ var REQUEST_TIMEOUT_MS59 = 6e4;
86244
+ var inputSchema75 = z77.object({
86245
+ toolUseIntent: z77.string().optional().describe(
86246
+ "Brief description of what you intend to accomplish with this tool call"
86247
+ ),
86248
+ connectionId: z77.string().describe("ID of the Salesforce connection to use"),
86249
+ method: z77.enum(["GET", "POST", "PATCH", "DELETE"]).describe(
86250
+ "HTTP method. GET for reading resources and SOQL queries, POST for creating, PATCH for updating, DELETE for removing."
86251
+ ),
86252
+ path: z77.string().describe(
86253
+ "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/'."
86254
+ ),
86255
+ body: z77.record(z77.string(), z77.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
86256
+ });
86257
+ var outputSchema75 = z77.discriminatedUnion("success", [
86258
+ z77.object({
86259
+ success: z77.literal(true),
86260
+ status: z77.number(),
86261
+ data: z77.record(z77.string(), z77.unknown())
86262
+ }),
86263
+ z77.object({
86264
+ success: z77.literal(false),
86265
+ error: z77.string()
86266
+ })
86267
+ ]);
86268
+ var requestTool47 = new ConnectorTool({
86269
+ name: "request",
86270
+ description: `Send authenticated requests to the Salesforce REST API.
86271
+ Authentication is handled automatically using the OAuth 2.0 username-password flow (Connected App Consumer Key + Secret with the Salesforce account credentials). An access token and instance URL are obtained on each request, so the tool user only provides the API path.
86272
+ 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.
86273
+ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads rather than paginating /sobjects/{Type} endpoints.`,
86274
+ inputSchema: inputSchema75,
86275
+ outputSchema: outputSchema75,
86276
+ async execute({ connectionId, method, path: path4, body }, connections) {
86277
+ const connection = connections.find((c6) => c6.id === connectionId);
86278
+ if (!connection) {
86279
+ return {
86280
+ success: false,
86281
+ error: `Connection ${connectionId} not found`
86282
+ };
86283
+ }
86284
+ console.log(
86285
+ `[connector-request] salesforce/${connection.name}: ${method} ${path4}`
86286
+ );
86287
+ try {
86288
+ const username = parameters62.username.getValue(connection);
86289
+ const password = parameters62.password.getValue(connection);
86290
+ const clientId = parameters62.clientId.getValue(connection);
86291
+ const clientSecret = parameters62.clientSecret.getValue(connection);
86292
+ const isSandbox = parameters62.isSandbox.tryGetValue(connection)?.toLowerCase() === "true";
86293
+ const loginHost = isSandbox ? "https://test.salesforce.com" : "https://login.salesforce.com";
86294
+ const tokenBody = new URLSearchParams({
86295
+ grant_type: "password",
86296
+ client_id: clientId,
86297
+ client_secret: clientSecret,
86298
+ username,
86299
+ password
86300
+ });
86301
+ const tokenRes = await fetch(`${loginHost}/services/oauth2/token`, {
86302
+ method: "POST",
86303
+ headers: {
86304
+ "Content-Type": "application/x-www-form-urlencoded"
86305
+ },
86306
+ body: tokenBody.toString()
86307
+ });
86308
+ if (!tokenRes.ok) {
86309
+ const errText = await tokenRes.text().catch(() => "(unreadable body)");
86310
+ return {
86311
+ success: false,
86312
+ error: `Failed to obtain access token: ${tokenRes.status} ${tokenRes.statusText} \u2014 ${errText}`
86313
+ };
86314
+ }
86315
+ const tokenJson = await tokenRes.json();
86316
+ if (!tokenJson.access_token || !tokenJson.instance_url) {
86317
+ return {
86318
+ success: false,
86319
+ error: "access_token or instance_url not found in token response"
86320
+ };
86321
+ }
86322
+ const url = `${tokenJson.instance_url}${path4.startsWith("/") ? "" : "/"}${path4}`;
86323
+ const controller = new AbortController();
86324
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS59);
86325
+ try {
86326
+ const response = await fetch(url, {
86327
+ method,
86328
+ headers: {
86329
+ Authorization: `Bearer ${tokenJson.access_token}`,
86330
+ "Content-Type": "application/json"
86331
+ },
86332
+ body: body ? JSON.stringify(body) : void 0,
86333
+ signal: controller.signal
86334
+ });
86335
+ const text = await response.text();
86336
+ let data;
86337
+ try {
86338
+ data = text ? JSON.parse(text) : {};
86339
+ } catch {
86340
+ data = { raw: text };
86341
+ }
86342
+ if (!response.ok) {
86343
+ let errorMessage = `HTTP ${response.status} ${response.statusText}`;
86344
+ if (Array.isArray(data) && data.length > 0) {
86345
+ const first = data[0];
86346
+ if (first.message) {
86347
+ errorMessage = first.errorCode ? `${first.errorCode}: ${first.message}` : first.message;
86348
+ }
86349
+ } else if (typeof data.message === "string") {
86350
+ errorMessage = data.message;
86351
+ } else if (typeof data.error === "string") {
86352
+ errorMessage = data.error;
86353
+ }
86354
+ return { success: false, error: errorMessage };
86355
+ }
86356
+ return { success: true, status: response.status, data };
86357
+ } finally {
86358
+ clearTimeout(timeout);
86359
+ }
86360
+ } catch (err) {
86361
+ const msg = err instanceof Error ? err.message : String(err);
86362
+ return { success: false, error: msg };
86363
+ }
86364
+ }
86365
+ });
86366
+
86367
+ // ../connectors/src/connectors/salesforce/index.ts
86368
+ var tools62 = { request: requestTool47 };
86369
+ var salesforceConnector = new ConnectorPlugin({
86370
+ slug: "salesforce",
86371
+ authType: AUTH_TYPES.USER_PASSWORD,
86372
+ name: "Salesforce",
86373
+ description: "Connect to Salesforce CRM for accounts, contacts, opportunities, leads, cases, and custom objects via SOQL and the REST API.",
86374
+ iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6vZlbrUKhxXIiuvWJlb8YB/bbc5e08b88de46c8ed338a74c7d0abb3/salesforce-icon.png",
86375
+ parameters: parameters62,
86376
+ releaseFlag: { dev1: true, dev2: false, prod: false },
86377
+ onboarding: salesforceOnboarding,
86378
+ systemPrompt: {
86379
+ en: `### Tools
86380
+
86381
+ - \`salesforce_request\`: The only way to call the Salesforce REST API. Use it to run SOQL queries, describe sObjects, and read/create/update/delete standard (Account, Contact, Opportunity, Lead, Case) and custom objects. Authentication (OAuth 2.0 username-password flow against the Connected App) is configured automatically \u2014 an access token and the org's instance URL are resolved on each request. Prefer SOQL via \`GET /services/data/v60.0/query?q=...\` over paginating \`/sobjects/{Type}\` endpoints for filtered or joined reads.
86382
+
86383
+ ### Business Logic
86384
+
86385
+ The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
86386
+
86387
+ SDK methods (client created via \`connection(connectionId)\`):
86388
+ - \`client.request(path, init?)\` \u2014 low-level authenticated fetch against the Salesforce instance URL
86389
+ - \`client.query(soql)\` \u2014 run a SOQL query and return \`{ totalSize, done, records, nextRecordsUrl? }\`
86390
+ - \`client.queryMore(nextRecordsUrl)\` \u2014 fetch the next page of SOQL results
86391
+ - \`client.describeSObject(objectType)\` \u2014 describe an sObject's metadata
86392
+ - \`client.getRecord(objectType, id, options?)\` \u2014 fetch a single record (optionally restrict fields)
86393
+ - \`client.createRecord(objectType, fields)\` \u2014 create a new record
86394
+ - \`client.updateRecord(objectType, id, fields)\` \u2014 patch an existing record
86395
+ - \`client.deleteRecord(objectType, id)\` \u2014 delete a record
86396
+
86397
+ \`\`\`ts
86398
+ import type { Context } from "hono";
86399
+ import { connection } from "@squadbase/vite-server/connectors/salesforce";
86400
+
86401
+ const salesforce = connection("<connectionId>");
86402
+
86403
+ export default async function handler(c: Context) {
86404
+ const { industry, limit = 50 } = await c.req.json<{
86405
+ industry?: string;
86406
+ limit?: number;
86407
+ }>();
86408
+
86409
+ const where = industry
86410
+ ? \`WHERE Industry = '\${industry.replace(/'/g, "\\\\'")}'\`
86411
+ : "";
86412
+ const soql = \`SELECT Id, Name, Industry, AnnualRevenue FROM Account \${where} ORDER BY AnnualRevenue DESC NULLS LAST LIMIT \${limit}\`;
86413
+
86414
+ const { records } = await salesforce.query<{
86415
+ Id: string;
86416
+ Name: string;
86417
+ Industry: string | null;
86418
+ AnnualRevenue: number | null;
86419
+ }>(soql);
86420
+
86421
+ return c.json({ accounts: records });
86422
+ }
86423
+ \`\`\`
86424
+
86425
+ ### Salesforce REST API Reference
86426
+
86427
+ - Login host: \`https://login.salesforce.com\` (production) or \`https://test.salesforce.com\` (sandbox)
86428
+ - Token endpoint: \`POST /services/oauth2/token\` (grant_type=password + client_id/secret + username/password)
86429
+ - Base path after login: \`{instance_url}/services/data/v60.0\`
86430
+ - Authentication: Bearer token (handled automatically per request)
86431
+ - Pagination (SOQL): follow \`nextRecordsUrl\` from the response (absolute path starting with \`/services/data/v60.0/query/...\`)
86432
+
86433
+ #### Common Endpoints
86434
+ - GET \`/services/data/\` \u2014 List available API versions
86435
+ - GET \`/services/data/v60.0/sobjects/\` \u2014 List all sObjects (standard + custom)
86436
+ - GET \`/services/data/v60.0/sobjects/{Type}/describe\` \u2014 Describe an sObject (fields, relationships, picklists)
86437
+ - GET \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Get a record (supports \`?fields=...\`)
86438
+ - POST \`/services/data/v60.0/sobjects/{Type}\` \u2014 Create a record
86439
+ - PATCH \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Update a record
86440
+ - DELETE \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Delete a record
86441
+ - GET \`/services/data/v60.0/query?q={soql}\` \u2014 Run SOQL
86442
+ - GET \`/services/data/v60.0/search?q={sosl}\` \u2014 Run SOSL
86443
+
86444
+ #### SOQL Reference
86445
+ - SELECT column list is required (no \`SELECT *\`)
86446
+ - Filter: \`WHERE\`, \`AND\` / \`OR\`, parent/child relationship fields (e.g., \`Account.Name\`)
86447
+ - Sort: \`ORDER BY field [ASC|DESC] [NULLS FIRST|NULLS LAST]\`
86448
+ - Paginate: \`LIMIT n\`, \`OFFSET m\`; for large result sets, follow \`nextRecordsUrl\` instead of OFFSET
86449
+ - Aggregate: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
86450
+ - Parent-to-child subquery: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``,
86451
+ ja: `### \u30C4\u30FC\u30EB
86452
+
86453
+ - \`salesforce_request\`: Salesforce REST API \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002SOQL \u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u3001sObject \u306E describe\u3001\u6A19\u6E96\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08Account, Contact, Opportunity, Lead, Case\uFF09\u3084\u30AB\u30B9\u30BF\u30E0\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u8AAD\u307F\u66F8\u304D\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08Connected App + OAuth 2.0 Username-Password Flow\uFF09\u306F\u81EA\u52D5\u3067\u884C\u308F\u308C\u3001\u30EA\u30AF\u30A8\u30B9\u30C8\u3054\u3068\u306B\u30A2\u30AF\u30BB\u30B9\u30C8\u30FC\u30AF\u30F3\u3068\u7D44\u7E54\u306E instance URL \u304C\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002\u30D5\u30A3\u30EB\u30BF\u3084\u7D50\u5408\u306E\u3042\u308B\u8AAD\u307F\u53D6\u308A\u3067\u306F \`/sobjects/{Type}\` \u3092\u30DA\u30FC\u30B8\u30F3\u30B0\u3059\u308B\u306E\u3067\u306F\u306A\u304F\u3001\`GET /services/data/v60.0/query?q=...\` \u306E SOQL \u3092\u512A\u5148\u3057\u3066\u304F\u3060\u3055\u3044\u3002
86454
+
86455
+ ### Business Logic
86456
+
86457
+ \u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u30CF\u30F3\u30C9\u30E9\u5185\u3067\u306F\u30B3\u30CD\u30AF\u30BF SDK \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u8A8D\u8A3C\u60C5\u5831\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
86458
+
86459
+ SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
86460
+ - \`client.request(path, init?)\` \u2014 Salesforce \u306E instance URL \u306B\u5BFE\u3059\u308B\u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304D fetch
86461
+ - \`client.query(soql)\` \u2014 SOQL \u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3057 \`{ totalSize, done, records, nextRecordsUrl? }\` \u3092\u8FD4\u5374
86462
+ - \`client.queryMore(nextRecordsUrl)\` \u2014 SOQL \u7D50\u679C\u306E\u6B21\u30DA\u30FC\u30B8\u3092\u53D6\u5F97
86463
+ - \`client.describeSObject(objectType)\` \u2014 sObject \u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
86464
+ - \`client.getRecord(objectType, id, options?)\` \u2014 1 \u4EF6\u306E\u30EC\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\uFF08\u4EFB\u610F\u3067\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6307\u5B9A\uFF09
86465
+ - \`client.createRecord(objectType, fields)\` \u2014 \u30EC\u30B3\u30FC\u30C9\u3092\u65B0\u898F\u4F5C\u6210
86466
+ - \`client.updateRecord(objectType, id, fields)\` \u2014 \u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u66F4\u65B0\uFF08PATCH\uFF09
86467
+ - \`client.deleteRecord(objectType, id)\` \u2014 \u30EC\u30B3\u30FC\u30C9\u3092\u524A\u9664
86468
+
86469
+ \`\`\`ts
86470
+ import type { Context } from "hono";
86471
+ import { connection } from "@squadbase/vite-server/connectors/salesforce";
86472
+
86473
+ const salesforce = connection("<connectionId>");
86474
+
86475
+ export default async function handler(c: Context) {
86476
+ const { industry, limit = 50 } = await c.req.json<{
86477
+ industry?: string;
86478
+ limit?: number;
86479
+ }>();
86480
+
86481
+ const where = industry
86482
+ ? \`WHERE Industry = '\${industry.replace(/'/g, "\\\\'")}'\`
86483
+ : "";
86484
+ const soql = \`SELECT Id, Name, Industry, AnnualRevenue FROM Account \${where} ORDER BY AnnualRevenue DESC NULLS LAST LIMIT \${limit}\`;
86485
+
86486
+ const { records } = await salesforce.query<{
86487
+ Id: string;
86488
+ Name: string;
86489
+ Industry: string | null;
86490
+ AnnualRevenue: number | null;
86491
+ }>(soql);
86492
+
86493
+ return c.json({ accounts: records });
86494
+ }
86495
+ \`\`\`
86496
+
86497
+ ### Salesforce REST API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
86498
+
86499
+ - \u30ED\u30B0\u30A4\u30F3\u30DB\u30B9\u30C8: \`https://login.salesforce.com\`\uFF08\u672C\u756A\uFF09\u307E\u305F\u306F \`https://test.salesforce.com\`\uFF08Sandbox\uFF09
86500
+ - \u30C8\u30FC\u30AF\u30F3\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8: \`POST /services/oauth2/token\`\uFF08grant_type=password + client_id/secret + username/password\uFF09
86501
+ - \u30ED\u30B0\u30A4\u30F3\u5F8C\u306E\u30D9\u30FC\u30B9\u30D1\u30B9: \`{instance_url}/services/data/v60.0\`
86502
+ - \u8A8D\u8A3C: Bearer \u30C8\u30FC\u30AF\u30F3\uFF08\u30EA\u30AF\u30A8\u30B9\u30C8\u3054\u3068\u306B\u81EA\u52D5\u8A2D\u5B9A\uFF09
86503
+ - \u30DA\u30FC\u30B8\u30CD\u30FC\u30B7\u30E7\u30F3\uFF08SOQL\uFF09: \u30EC\u30B9\u30DD\u30F3\u30B9\u306E \`nextRecordsUrl\`\uFF08\`/services/data/v60.0/query/...\` \u304B\u3089\u59CB\u307E\u308B\u7D76\u5BFE\u30D1\u30B9\uFF09\u3092\u8FBF\u308B
86504
+
86505
+ #### \u4E3B\u8981\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
86506
+ - GET \`/services/data/\` \u2014 \u5229\u7528\u53EF\u80FD\u306A API \u30D0\u30FC\u30B8\u30E7\u30F3\u4E00\u89A7
86507
+ - GET \`/services/data/v60.0/sobjects/\` \u2014 sObject \u4E00\u89A7\uFF08\u6A19\u6E96 + \u30AB\u30B9\u30BF\u30E0\uFF09
86508
+ - GET \`/services/data/v60.0/sobjects/{Type}/describe\` \u2014 sObject \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30EA\u30EC\u30FC\u30B7\u30E7\u30F3\u30FB\u30D4\u30C3\u30AF\u30EA\u30B9\u30C8\u3092\u53D6\u5F97
86509
+ - GET \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\uFF08\`?fields=...\` \u3067\u7D5E\u308A\u8FBC\u307F\u53EF\uFF09
86510
+ - POST \`/services/data/v60.0/sobjects/{Type}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u4F5C\u6210
86511
+ - PATCH \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u66F4\u65B0
86512
+ - DELETE \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u524A\u9664
86513
+ - GET \`/services/data/v60.0/query?q={soql}\` \u2014 SOQL \u3092\u5B9F\u884C
86514
+ - GET \`/services/data/v60.0/search?q={sosl}\` \u2014 SOSL \u3092\u5B9F\u884C
86515
+
86516
+ #### SOQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
86517
+ - SELECT \u5217\u306E\u660E\u793A\u304C\u5FC5\u9808\uFF08\`SELECT *\` \u306F\u4E0D\u53EF\uFF09
86518
+ - \u30D5\u30A3\u30EB\u30BF: \`WHERE\`\u3001\`AND\` / \`OR\`\u3001\u89AA\u5B50\u30EA\u30EC\u30FC\u30B7\u30E7\u30F3\u53C2\u7167\uFF08\u4F8B: \`Account.Name\`\uFF09
86519
+ - \u4E26\u3073\u66FF\u3048: \`ORDER BY field [ASC|DESC] [NULLS FIRST|NULLS LAST]\`
86520
+ - \u30DA\u30FC\u30B8\u30F3\u30B0: \`LIMIT n\`, \`OFFSET m\`\u3002\u5927\u91CF\u30C7\u30FC\u30BF\u3067\u306F OFFSET \u3067\u306F\u306A\u304F \`nextRecordsUrl\` \u3092\u5229\u7528\u3059\u308B
86521
+ - \u96C6\u8A08: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
86522
+ - \u89AA\u2192\u5B50\u30B5\u30D6\u30AF\u30A8\u30EA: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``
86523
+ },
86524
+ tools: tools62
86525
+ });
86526
+
86527
+ // ../connectors/src/connectors/influxdb/setup.ts
86528
+ var influxdbOnboarding = new ConnectorOnboarding({
86529
+ connectionSetupInstructions: {
86530
+ en: `#### Generate an API Token
86531
+ 1. Sign in to your InfluxDB Cloud / OSS instance
86532
+ 2. Go to Load Data \u2192 API Tokens \u2192 Generate API Token
86533
+ 3. Create an All-Access or Custom token with at least read permission on your target database/bucket
86534
+ 4. Copy the token into the API Token parameter
86535
+
86536
+ #### Confirm the Database (or Bucket) Name
86537
+ - InfluxDB 3: use the database name
86538
+ - InfluxDB 2: use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
86539
+
86540
+ #### Organization (InfluxDB 2 only)
86541
+ - If you are on InfluxDB 2, set the Organization parameter to the org that owns the bucket
86542
+ - For InfluxDB 3 Cloud you can leave Organization blank`,
86543
+ ja: `#### API \u30C8\u30FC\u30AF\u30F3\u306E\u767A\u884C
86544
+ 1. InfluxDB Cloud / OSS \u306B\u30B5\u30A4\u30F3\u30A4\u30F3
86545
+ 2. Load Data \u2192 API Tokens \u2192 Generate API Token
86546
+ 3. \u5BFE\u8C61\u306E database / bucket \u306B\u5BFE\u3057\u3066\u6700\u4F4E\u9650 read \u6A29\u9650\u3092\u6301\u3064 All-Access \u307E\u305F\u306F Custom \u30C8\u30FC\u30AF\u30F3\u3092\u4F5C\u6210
86547
+ 4. \u767A\u884C\u3057\u305F\u30C8\u30FC\u30AF\u30F3\u3092 API Token \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8CBC\u308A\u4ED8\u3051
86548
+
86549
+ #### Database (\u307E\u305F\u306F Bucket) \u540D\u306E\u78BA\u8A8D
86550
+ - InfluxDB 3: database \u540D\u3092\u4F7F\u7528
86551
+ - InfluxDB 2: bucket \u540D\u3092\u4F7F\u7528\uFF08v1/v3 \u4E92\u63DB\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3067\u306F bucket \u304C database \u3068\u3057\u3066\u6271\u308F\u308C\u308B\uFF09
86552
+
86553
+ #### Organization\uFF08InfluxDB 2 \u306E\u307F\uFF09
86554
+ - InfluxDB 2 \u306E\u5834\u5408\u3001bucket \u3092\u4FDD\u6709\u3059\u308B\u7D44\u7E54\u540D\u3092 Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8A2D\u5B9A
86555
+ - InfluxDB 3 Cloud \u306E\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
86556
+ },
86557
+ dataOverviewInstructions: {
86558
+ en: `1. For InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
86559
+ 2. For InfluxDB 3: inspect a sample measurement with POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" }
86560
+ 3. For InfluxDB 2: call influxdb_request with POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'buckets()' to list buckets, then 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' to inspect data`,
86561
+ ja: `1. InfluxDB 3 \u306E\u5834\u5408: influxdb_request \u3067 POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SHOW TABLES" } \u3092\u5B9F\u884C\u3057 measurement \u4E00\u89A7\u3092\u53D6\u5F97
86562
+ 2. InfluxDB 3 \u306E\u5834\u5408: POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" } \u3067\u4EE3\u8868\u7684\u306A measurement \u306E\u69CB\u9020\u3092\u78BA\u8A8D
86563
+ 3. InfluxDB 2 \u306E\u5834\u5408: POST /api/v2/query?org=<org>\u3001contentType 'application/vnd.flux'\u3001body 'buckets()' \u3067 bucket \u4E00\u89A7\u3092\u53D6\u5F97\u3057\u3001\u7D9A\u3044\u3066 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' \u3067\u30C7\u30FC\u30BF\u3092\u78BA\u8A8D`
86564
+ }
86565
+ });
86566
+
86567
+ // ../connectors/src/connectors/influxdb/parameters.ts
86568
+ var parameters63 = {
86569
+ url: new ParameterDefinition({
86570
+ slug: "url",
86571
+ name: "InfluxDB URL",
86572
+ description: "The base URL of your InfluxDB instance (e.g., 'https://us-east-1-1.aws.cloud2.influxdata.com' for InfluxDB Cloud). Do not include a trailing slash.",
86573
+ envVarBaseKey: "INFLUXDB_URL",
86574
+ type: "text",
86575
+ secret: false,
86576
+ required: true
86577
+ }),
86578
+ token: new ParameterDefinition({
86579
+ slug: "token",
86580
+ name: "API Token",
86581
+ description: "The API token used to authenticate against your InfluxDB instance. Generate one from the InfluxDB UI (Load Data \u2192 API Tokens).",
86582
+ envVarBaseKey: "INFLUXDB_TOKEN",
86583
+ type: "text",
86584
+ secret: true,
86585
+ required: true
86586
+ }),
86587
+ database: new ParameterDefinition({
86588
+ slug: "database",
86589
+ name: "Database",
86590
+ description: "The default database to query. For InfluxDB 3 this is the database name; for InfluxDB 2 use the bucket name.",
86591
+ envVarBaseKey: "INFLUXDB_DATABASE",
86592
+ type: "text",
86593
+ secret: false,
86594
+ required: true
86595
+ }),
86596
+ org: new ParameterDefinition({
86597
+ slug: "org",
86598
+ name: "Organization",
86599
+ description: "The InfluxDB organization name. Required for InfluxDB 2.x Flux queries and writes; optional for InfluxDB 3.",
86600
+ envVarBaseKey: "INFLUXDB_ORG",
86601
+ type: "text",
86602
+ secret: false,
86603
+ required: false
86604
+ })
86605
+ };
86606
+
86607
+ // ../connectors/src/connectors/influxdb/tools/request.ts
86608
+ import { z as z78 } from "zod";
86609
+ var REQUEST_TIMEOUT_MS60 = 6e4;
86610
+ var inputSchema76 = z78.object({
86611
+ toolUseIntent: z78.string().optional().describe(
86612
+ "Brief description of what you intend to accomplish with this tool call"
86613
+ ),
86614
+ connectionId: z78.string().describe("ID of the InfluxDB connection to use"),
86615
+ method: z78.enum(["GET", "POST", "DELETE"]).describe(
86616
+ "HTTP method. POST for SQL/InfluxQL/Flux queries and writes, GET for metadata endpoints, DELETE for delete endpoints."
86617
+ ),
86618
+ path: z78.string().describe(
86619
+ "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."
86620
+ ),
86621
+ body: z78.union([z78.record(z78.string(), z78.unknown()), z78.string()]).optional().describe(
86622
+ "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."
86623
+ ),
86624
+ contentType: z78.string().optional().describe(
86625
+ "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'."
86626
+ )
86627
+ });
86628
+ var outputSchema76 = z78.discriminatedUnion("success", [
86629
+ z78.object({
86630
+ success: z78.literal(true),
86631
+ status: z78.number(),
86632
+ data: z78.unknown()
86633
+ }),
86634
+ z78.object({
86635
+ success: z78.literal(false),
86636
+ error: z78.string()
86637
+ })
86638
+ ]);
86639
+ var requestTool48 = new ConnectorTool({
86640
+ name: "request",
86641
+ description: `Send authenticated requests to the InfluxDB HTTP API.
86642
+ Authentication is handled automatically using the API token (\`Authorization: Token {token}\`). The instance URL is resolved from the connection.
86643
+ Use this tool for all InfluxDB interactions: running SQL / InfluxQL / Flux queries, writing line protocol, and managing buckets / databases.
86644
+ 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.`,
86645
+ inputSchema: inputSchema76,
86646
+ outputSchema: outputSchema76,
86647
+ async execute({ connectionId, method, path: path4, body, contentType }, connections) {
86648
+ const connection = connections.find((c6) => c6.id === connectionId);
86649
+ if (!connection) {
86650
+ return {
86651
+ success: false,
86652
+ error: `Connection ${connectionId} not found`
86653
+ };
86654
+ }
86655
+ console.log(
86656
+ `[connector-request] influxdb/${connection.name}: ${method} ${path4}`
86657
+ );
86658
+ try {
86659
+ const url = parameters63.url.getValue(connection).replace(/\/$/, "");
86660
+ const token = parameters63.token.getValue(connection);
86661
+ const fullUrl = `${url}${path4.startsWith("/") ? "" : "/"}${path4}`;
86662
+ const controller = new AbortController();
86663
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS60);
86664
+ const resolvedContentType = contentType ?? (typeof body === "string" ? "text/plain; charset=utf-8" : "application/json");
86665
+ const serializedBody = body === void 0 ? void 0 : typeof body === "string" ? body : JSON.stringify(body);
86666
+ try {
86667
+ const response = await fetch(fullUrl, {
86668
+ method,
86669
+ headers: {
86670
+ Authorization: `Token ${token}`,
86671
+ "Content-Type": resolvedContentType,
86672
+ Accept: "application/json"
86673
+ },
86674
+ body: serializedBody,
86675
+ signal: controller.signal
86676
+ });
86677
+ const text = await response.text();
86678
+ let data;
86679
+ const resContentType = response.headers.get("content-type") ?? "";
86680
+ if (resContentType.includes("application/json")) {
86681
+ try {
86682
+ data = text ? JSON.parse(text) : null;
86683
+ } catch {
86684
+ data = { raw: text };
86685
+ }
86686
+ } else {
86687
+ data = text;
86688
+ }
86689
+ if (!response.ok) {
86690
+ let errorMessage = `HTTP ${response.status} ${response.statusText}`;
86691
+ if (data && typeof data === "object" && !Array.isArray(data) && typeof data.message === "string") {
86692
+ errorMessage = data.message;
86693
+ } else if (typeof data === "string" && data) {
86694
+ errorMessage = data;
86695
+ }
86696
+ return { success: false, error: errorMessage };
86697
+ }
86698
+ return { success: true, status: response.status, data };
86699
+ } finally {
86700
+ clearTimeout(timeout);
86701
+ }
86702
+ } catch (err) {
86703
+ const msg = err instanceof Error ? err.message : String(err);
86704
+ return { success: false, error: msg };
86705
+ }
86706
+ }
86707
+ });
86708
+
86709
+ // ../connectors/src/connectors/influxdb/index.ts
86710
+ var tools63 = { request: requestTool48 };
86711
+ var influxdbConnector = new ConnectorPlugin({
86712
+ slug: "influxdb",
86713
+ authType: AUTH_TYPES.API_KEY,
86714
+ name: "InfluxDB",
86715
+ description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
86716
+ iconUrl: "https://upload.wikimedia.org/wikipedia/commons/b/b2/Influxdb_logo.svg",
86717
+ parameters: parameters63,
86718
+ releaseFlag: { dev1: true, dev2: false, prod: false },
86719
+ onboarding: influxdbOnboarding,
86720
+ systemPrompt: {
86721
+ en: `### Tools
86722
+
86723
+ - \`influxdb_request\`: The only way to call the InfluxDB HTTP API. Use it to run SQL / InfluxQL / Flux queries, write line protocol, and inspect buckets / databases. Authentication (\`Authorization: Token {token}\`) and the instance URL are configured automatically. For InfluxDB 3 prefer SQL (\`POST /api/v3/query_sql\`) \u2014 it returns JSON rows that are directly usable. For InfluxDB 2 use Flux (\`POST /api/v2/query?org={org}\`) \u2014 the response is annotated CSV. Writes use \`POST /api/v3/write_lp?db={db}\` (v3) or \`POST /api/v2/write?org={org}&bucket={bucket}\` (v2) with a line-protocol body and \`contentType\` set to \`text/plain; charset=utf-8\`.
86724
+
86725
+ ### Business Logic
86726
+
86727
+ The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
86728
+
86729
+ SDK methods (client created via \`connection(connectionId)\`):
86730
+ - \`client.request(path, init?)\` \u2014 low-level authenticated fetch against the InfluxDB base URL
86731
+ - \`client.querySql<T>(sql, options?)\` \u2014 InfluxDB 3 SQL query; returns an array of row objects, defaults \`db\` to the configured database
86732
+ - \`client.queryInfluxql<T>(influxql, options?)\` \u2014 InfluxDB 3 InfluxQL query; same shape as \`querySql\`
86733
+ - \`client.queryFlux(flux, options?)\` \u2014 InfluxDB 2 Flux query; returns raw annotated CSV (parse as needed)
86734
+ - \`client.writeLineProtocol(lineProtocol, options?)\` \u2014 append-only write; uses v3 or v2 endpoint depending on whether \`org\` is configured
86735
+ - \`client.database\` / \`client.org\` \u2014 connection-level defaults
86736
+
86737
+ \`\`\`ts
86738
+ import type { Context } from "hono";
86739
+ import { connection } from "@squadbase/vite-server/connectors/influxdb";
86740
+
86741
+ const influx = connection("<connectionId>");
86742
+
86743
+ export default async function handler(c: Context) {
86744
+ const { measurement = "cpu", limit = 60 } = await c.req.json<{
86745
+ measurement?: string;
86746
+ limit?: number;
86747
+ }>();
86748
+
86749
+ const rows = await influx.querySql<{
86750
+ time: string;
86751
+ usage_user: number;
86752
+ host: string;
86753
+ }>(
86754
+ \`SELECT time, usage_user, host FROM \${measurement} ORDER BY time DESC LIMIT \${limit}\`,
86755
+ );
86756
+
86757
+ return c.json({ series: rows });
86758
+ }
86759
+ \`\`\`
86760
+
86761
+ ### InfluxDB HTTP API Reference
86762
+
86763
+ - Base URL: the \`url\` parameter (e.g., \`https://us-east-1-1.aws.cloud2.influxdata.com\`)
86764
+ - Authentication: \`Authorization: Token {token}\` (handled automatically)
86765
+ - Response content types: \`application/json\` for SQL/InfluxQL, annotated CSV for Flux
86766
+
86767
+ #### InfluxDB 3 Endpoints
86768
+ - POST \`/api/v3/query_sql\` \u2014 Body: \`{ "db": "<database>", "q": "<sql>" }\` \u2192 JSON rows
86769
+ - POST \`/api/v3/query_influxql\` \u2014 Body: \`{ "db": "<database>", "q": "<influxql>" }\` \u2192 JSON rows
86770
+ - POST \`/api/v3/write_lp?db=<database>&precision=ns\` \u2014 Body: raw line protocol
86771
+ - GET \`/api/v3/configure/database\` \u2014 List databases
86772
+
86773
+ #### InfluxDB 2 Endpoints
86774
+ - POST \`/api/v2/query?org=<org>\` \u2014 Body: Flux script (Content-Type: \`application/vnd.flux\`) \u2192 annotated CSV
86775
+ - POST \`/api/v2/write?org=<org>&bucket=<bucket>&precision=ns\` \u2014 Body: raw line protocol
86776
+ - GET \`/api/v2/buckets?org=<org>\` \u2014 List buckets
86777
+ - GET \`/api/v2/orgs\` \u2014 List organizations
86778
+
86779
+ #### SQL Reference (InfluxDB 3)
86780
+ - \`SELECT field_list FROM measurement WHERE time >= now() - INTERVAL '1 hour' AND tag = 'x' ORDER BY time DESC LIMIT 100\`
86781
+ - Time filtering uses standard SQL \`time\` column comparisons (\`time >= now() - INTERVAL '...' \`)
86782
+ - Aggregates: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`; bucket time with \`date_bin('5 minutes', time)\`
86783
+ - List measurements: \`SHOW TABLES\`; list columns: \`SHOW COLUMNS FROM <measurement>\``,
86784
+ ja: `### \u30C4\u30FC\u30EB
86785
+
86786
+ - \`influxdb_request\`: InfluxDB HTTP API \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002SQL / InfluxQL / Flux \u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u3001line protocol \u66F8\u304D\u8FBC\u307F\u3001bucket / database \u306E\u78BA\u8A8D\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08\`Authorization: Token {token}\`\uFF09\u3068 instance URL \u306F\u81EA\u52D5\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002InfluxDB 3 \u3067\u306F SQL (\`POST /api/v3/query_sql\`) \u304C JSON \u884C\u3092\u8FD4\u3059\u305F\u3081\u6700\u3082\u6271\u3044\u3084\u3059\u3044\u3067\u3059\u3002InfluxDB 2 \u3067\u306F Flux (\`POST /api/v2/query?org={org}\`) \u3092\u4F7F\u7528\u3057\u3001\u30EC\u30B9\u30DD\u30F3\u30B9\u306F\u6CE8\u91C8\u4ED8\u304D CSV \u3067\u3059\u3002\u66F8\u304D\u8FBC\u307F\u306F \`POST /api/v3/write_lp?db={db}\` (v3) \u307E\u305F\u306F \`POST /api/v2/write?org={org}&bucket={bucket}\` (v2) \u306B line protocol \u3092\u9001\u308A\u307E\u3059\uFF08\`contentType\` \u306F \`text/plain; charset=utf-8\`\uFF09\u3002
86787
+
86788
+ ### Business Logic
86789
+
86790
+ \u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u30CF\u30F3\u30C9\u30E9\u5185\u3067\u306F\u30B3\u30CD\u30AF\u30BF SDK \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u8A8D\u8A3C\u60C5\u5831\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
86791
+
86792
+ SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
86793
+ - \`client.request(path, init?)\` \u2014 InfluxDB \u30D9\u30FC\u30B9 URL \u306B\u5BFE\u3059\u308B\u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304D fetch
86794
+ - \`client.querySql<T>(sql, options?)\` \u2014 InfluxDB 3 \u306E SQL \u30AF\u30A8\u30EA\u3002\u884C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u914D\u5217\u3092\u8FD4\u5374\u3057\u3001\`db\` \u306F\u65E2\u5B9A\u3067\u63A5\u7D9A\u306E database
86795
+ - \`client.queryInfluxql<T>(influxql, options?)\` \u2014 InfluxDB 3 \u306E InfluxQL \u30AF\u30A8\u30EA\uFF08\`querySql\` \u3068\u540C\u3058\u5F62\u5F0F\uFF09
86796
+ - \`client.queryFlux(flux, options?)\` \u2014 InfluxDB 2 \u306E Flux \u30AF\u30A8\u30EA\u3002\u6CE8\u91C8\u4ED8\u304D CSV \u3092\u6587\u5B57\u5217\u3067\u8FD4\u5374\uFF08\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u30D1\u30FC\u30B9\uFF09
86797
+ - \`client.writeLineProtocol(lineProtocol, options?)\` \u2014 append-only \u66F8\u304D\u8FBC\u307F\u3002\`org\` \u306E\u6709\u7121\u3067 v3 / v2 \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u5207\u308A\u66FF\u3048
86798
+ - \`client.database\` / \`client.org\` \u2014 \u63A5\u7D9A\u5358\u4F4D\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024
86799
+
86800
+ \`\`\`ts
86801
+ import type { Context } from "hono";
86802
+ import { connection } from "@squadbase/vite-server/connectors/influxdb";
86803
+
86804
+ const influx = connection("<connectionId>");
86805
+
86806
+ export default async function handler(c: Context) {
86807
+ const { measurement = "cpu", limit = 60 } = await c.req.json<{
86808
+ measurement?: string;
86809
+ limit?: number;
86810
+ }>();
86811
+
86812
+ const rows = await influx.querySql<{
86813
+ time: string;
86814
+ usage_user: number;
86815
+ host: string;
86816
+ }>(
86817
+ \`SELECT time, usage_user, host FROM \${measurement} ORDER BY time DESC LIMIT \${limit}\`,
86818
+ );
86819
+
86820
+ return c.json({ series: rows });
86821
+ }
86822
+ \`\`\`
86823
+
86824
+ ### InfluxDB HTTP API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
86825
+
86826
+ - \u30D9\u30FC\u30B9 URL: \`url\` \u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u6307\u5B9A\uFF08\u4F8B: \`https://us-east-1-1.aws.cloud2.influxdata.com\`\uFF09
86827
+ - \u8A8D\u8A3C: \`Authorization: Token {token}\`\uFF08\u81EA\u52D5\u8A2D\u5B9A\uFF09
86828
+ - \u30EC\u30B9\u30DD\u30F3\u30B9\u5F62\u5F0F: SQL/InfluxQL \u306F JSON\u3001Flux \u306F\u6CE8\u91C8\u4ED8\u304D CSV
86829
+
86830
+ #### InfluxDB 3 \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
86831
+ - POST \`/api/v3/query_sql\` \u2014 Body: \`{ "db": "<database>", "q": "<sql>" }\` \u2192 JSON \u884C
86832
+ - POST \`/api/v3/query_influxql\` \u2014 Body: \`{ "db": "<database>", "q": "<influxql>" }\` \u2192 JSON \u884C
86833
+ - POST \`/api/v3/write_lp?db=<database>&precision=ns\` \u2014 Body: line protocol \u751F\u6587\u5B57\u5217
86834
+ - GET \`/api/v3/configure/database\` \u2014 database \u4E00\u89A7
86835
+
86836
+ #### InfluxDB 2 \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
86837
+ - POST \`/api/v2/query?org=<org>\` \u2014 Body: Flux \u30B9\u30AF\u30EA\u30D7\u30C8\uFF08Content-Type: \`application/vnd.flux\`\uFF09\u2192 \u6CE8\u91C8\u4ED8\u304D CSV
86838
+ - POST \`/api/v2/write?org=<org>&bucket=<bucket>&precision=ns\` \u2014 Body: line protocol \u751F\u6587\u5B57\u5217
86839
+ - GET \`/api/v2/buckets?org=<org>\` \u2014 bucket \u4E00\u89A7
86840
+ - GET \`/api/v2/orgs\` \u2014 organization \u4E00\u89A7
86841
+
86842
+ #### SQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 (InfluxDB 3)
86843
+ - \`SELECT field_list FROM measurement WHERE time >= now() - INTERVAL '1 hour' AND tag = 'x' ORDER BY time DESC LIMIT 100\`
86844
+ - \u6642\u523B\u30D5\u30A3\u30EB\u30BF\u306F\u6A19\u6E96 SQL \u306E \`time\` \u5217\u6BD4\u8F03\uFF08\`time >= now() - INTERVAL '...'\`\uFF09
86845
+ - \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
86846
+ - measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
86847
+ },
86848
+ tools: tools63
86849
+ });
86850
+
86292
86851
  // ../connectors/src/connectors/registry.ts
86293
86852
  var plugins = {
86294
86853
  snowflake: snowflakeConnector,
@@ -86351,7 +86910,9 @@ var plugins = {
86351
86910
  grafana: grafanaConnector,
86352
86911
  backlog: backlogConnector,
86353
86912
  gamma: gammaConnector,
86354
- sentry: sentryConnector
86913
+ sentry: sentryConnector,
86914
+ salesforce: salesforceConnector,
86915
+ influxdb: influxdbConnector
86355
86916
  };
86356
86917
  var connectors = {
86357
86918
  ...plugins,
@@ -86562,62 +87123,62 @@ function resolveParams2(entry, connectionId, plugin) {
86562
87123
  var { getQuery, loadConnections, reloadEnvFile, watchConnectionsFile } = createConnectorRegistry();
86563
87124
 
86564
87125
  // src/types/server-logic.ts
86565
- import { z as z77 } from "zod";
86566
- var parameterMetaSchema = z77.object({
86567
- name: z77.string(),
86568
- type: z77.enum(["string", "number", "boolean"]),
86569
- description: z77.string(),
86570
- required: z77.boolean().optional(),
86571
- default: z77.union([z77.string(), z77.number(), z77.boolean()]).optional()
86572
- });
86573
- var serverLogicCacheConfigSchema = z77.object({
86574
- ttl: z77.number(),
86575
- staleWhileRevalidate: z77.boolean().optional()
86576
- });
86577
- var serverLogicSchemaObjectSchema = z77.lazy(
86578
- () => z77.object({
86579
- type: z77.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
86580
- format: z77.string().optional(),
86581
- description: z77.string().optional(),
86582
- nullable: z77.boolean().optional(),
86583
- enum: z77.array(z77.union([z77.string(), z77.number(), z77.boolean(), z77.null()])).optional(),
87126
+ import { z as z79 } from "zod";
87127
+ var parameterMetaSchema = z79.object({
87128
+ name: z79.string(),
87129
+ type: z79.enum(["string", "number", "boolean"]),
87130
+ description: z79.string(),
87131
+ required: z79.boolean().optional(),
87132
+ default: z79.union([z79.string(), z79.number(), z79.boolean()]).optional()
87133
+ });
87134
+ var serverLogicCacheConfigSchema = z79.object({
87135
+ ttl: z79.number(),
87136
+ staleWhileRevalidate: z79.boolean().optional()
87137
+ });
87138
+ var serverLogicSchemaObjectSchema = z79.lazy(
87139
+ () => z79.object({
87140
+ type: z79.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
87141
+ format: z79.string().optional(),
87142
+ description: z79.string().optional(),
87143
+ nullable: z79.boolean().optional(),
87144
+ enum: z79.array(z79.union([z79.string(), z79.number(), z79.boolean(), z79.null()])).optional(),
86584
87145
  items: serverLogicSchemaObjectSchema.optional(),
86585
- properties: z77.record(z77.string(), serverLogicSchemaObjectSchema).optional(),
86586
- required: z77.array(z77.string()).optional(),
86587
- additionalProperties: z77.union([z77.boolean(), serverLogicSchemaObjectSchema]).optional(),
86588
- minimum: z77.number().optional(),
86589
- maximum: z77.number().optional(),
86590
- minLength: z77.number().optional(),
86591
- maxLength: z77.number().optional(),
86592
- pattern: z77.string().optional()
87146
+ properties: z79.record(z79.string(), serverLogicSchemaObjectSchema).optional(),
87147
+ required: z79.array(z79.string()).optional(),
87148
+ additionalProperties: z79.union([z79.boolean(), serverLogicSchemaObjectSchema]).optional(),
87149
+ minimum: z79.number().optional(),
87150
+ maximum: z79.number().optional(),
87151
+ minLength: z79.number().optional(),
87152
+ maxLength: z79.number().optional(),
87153
+ pattern: z79.string().optional()
86593
87154
  })
86594
87155
  );
86595
- var serverLogicMediaTypeSchema = z77.object({
87156
+ var serverLogicMediaTypeSchema = z79.object({
86596
87157
  schema: serverLogicSchemaObjectSchema.optional(),
86597
- example: z77.unknown().optional()
87158
+ example: z79.unknown().optional()
86598
87159
  });
86599
- var serverLogicResponseSchema = z77.object({
86600
- description: z77.string().optional(),
86601
- content: z77.record(z77.string(), serverLogicMediaTypeSchema).optional()
87160
+ var serverLogicResponseSchema = z79.object({
87161
+ description: z79.string().optional(),
87162
+ content: z79.record(z79.string(), serverLogicMediaTypeSchema).optional()
86602
87163
  });
86603
87164
  var jsonBaseFields = {
86604
- description: z77.string(),
86605
- parameters: z77.array(parameterMetaSchema).optional(),
87165
+ description: z79.string(),
87166
+ parameters: z79.array(parameterMetaSchema).optional(),
86606
87167
  response: serverLogicResponseSchema.optional(),
86607
87168
  cache: serverLogicCacheConfigSchema.optional()
86608
87169
  };
86609
- var jsonSqlServerLogicSchema = z77.object({
87170
+ var jsonSqlServerLogicSchema = z79.object({
86610
87171
  ...jsonBaseFields,
86611
- type: z77.literal("sql").optional(),
86612
- query: z77.string(),
86613
- connectionId: z77.string()
87172
+ type: z79.literal("sql").optional(),
87173
+ query: z79.string(),
87174
+ connectionId: z79.string()
86614
87175
  });
86615
- var jsonTypeScriptServerLogicSchema = z77.object({
87176
+ var jsonTypeScriptServerLogicSchema = z79.object({
86616
87177
  ...jsonBaseFields,
86617
- type: z77.literal("typescript"),
86618
- handlerPath: z77.string()
87178
+ type: z79.literal("typescript"),
87179
+ handlerPath: z79.string()
86619
87180
  });
86620
- var anyJsonServerLogicSchema = z77.union([
87181
+ var anyJsonServerLogicSchema = z79.union([
86621
87182
  jsonTypeScriptServerLogicSchema,
86622
87183
  jsonSqlServerLogicSchema
86623
87184
  ]);