@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
package/dist/index.js CHANGED
@@ -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);
@@ -66438,11 +66438,7 @@ var snowflakeOnboarding = new ConnectorOnboarding({
66438
66438
  8. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
66439
66439
  - **\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
66440
66440
  - **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
66441
- 9. \`updateConnectionContext\` \u3067\u4EE5\u4E0B\u3092\u4FDD\u5B58\u3059\u308B:
66442
- - \`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
66443
- - \`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
66444
- - \`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
66445
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
66441
+ 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
66446
66442
 
66447
66443
  #### \u5236\u7D04
66448
66444
  - 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
@@ -66465,11 +66461,7 @@ var snowflakeOnboarding = new ConnectorOnboarding({
66465
66461
  8. Branch based on results:
66466
66462
  - **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
66467
66463
  - **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
66468
- 9. Call \`updateConnectionContext\` to save:
66469
- - \`database\`: Selected database name(s) (comma-separated if multiple)
66470
- - \`schema\`: Selected schema name(s) (comma-separated if multiple)
66471
- - \`tables\`: Selected table names (fully qualified database.schema.table, comma-separated if multiple. Use "{database}.{schema}.*" for "all tables" schemas)
66472
- - \`note\`: Brief description of the setup
66464
+ 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.
66473
66465
 
66474
66466
  #### Constraints
66475
66467
  - askUserQuestion options requires at least 2 items. If there is only 1 item, do NOT call askUserQuestion \u2014 proceed to the next step directly
@@ -67603,10 +67595,7 @@ var bigqueryOnboarding = new ConnectorOnboarding({
67603
67595
  7. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
67604
67596
  - **\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
67605
67597
  - **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
67606
- 8. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
67607
- - \`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
67608
- - \`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
67609
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
67598
+ 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
67610
67599
 
67611
67600
  #### \u5236\u7D04
67612
67601
  - **\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
@@ -67635,10 +67624,7 @@ var bigqueryOnboarding = new ConnectorOnboarding({
67635
67624
  7. Branch based on results:
67636
67625
  - **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
67637
67626
  - **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
67638
- 8. Call \`updateConnectionContext\`:
67639
- - \`dataset\`: Selected dataset name(s) (comma-separated if multiple). Record public datasets in the format \`bigquery-public-data.{dataset}\`
67640
- - \`tables\`: Selected table name(s) (comma-separated if multiple)
67641
- - \`note\`: Brief description of the setup
67627
+ 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.
67642
67628
 
67643
67629
  #### Constraints
67644
67630
  - **Do NOT read table row data**. Only the metadata queries specified in the steps above are allowed. All other queries are forbidden
@@ -68065,10 +68051,7 @@ var bigqueryOnboarding2 = new ConnectorOnboarding({
68065
68051
  7. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
68066
68052
  - **\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
68067
68053
  - **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
68068
- 8. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
68069
- - \`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
68070
- - \`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
68071
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
68054
+ 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
68072
68055
 
68073
68056
  #### \u5236\u7D04
68074
68057
  - **\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
@@ -68097,10 +68080,7 @@ var bigqueryOnboarding2 = new ConnectorOnboarding({
68097
68080
  7. Branch based on results:
68098
68081
  - **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
68099
68082
  - **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
68100
- 8. Call \`updateConnectionContext\`:
68101
- - \`dataset\`: Selected dataset name(s) (comma-separated if multiple). Record public datasets in the format \`bigquery-public-data.{dataset}\`
68102
- - \`tables\`: Selected table name(s) (comma-separated if multiple)
68103
- - \`note\`: Brief description of the setup
68083
+ 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.
68104
68084
 
68105
68085
  #### Constraints
68106
68086
  - **Do NOT read table row data**. Only the metadata queries specified in the steps above are allowed. All other queries are forbidden
@@ -69720,10 +69700,6 @@ var googleAdsOnboarding = new ConnectorOnboarding({
69720
69700
  - \`parameterSlug\`: \`"customer-id"\`
69721
69701
  - \`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
69722
69702
  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
69723
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
69724
- - \`customer\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30B9\u30BF\u30DE\u30FC\u306E\u8868\u793A\u540D
69725
- - \`customerId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30B9\u30BF\u30DE\u30FCID
69726
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
69727
69703
 
69728
69704
  #### \u5236\u7D04
69729
69705
  - **\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
@@ -69739,10 +69715,6 @@ var googleAdsOnboarding = new ConnectorOnboarding({
69739
69715
  - \`parameterSlug\`: \`"customer-id"\`
69740
69716
  - \`options\`: The customer list. Each option's \`label\` should be \`Account Name (id: customerId)\`, \`value\` should be the customer ID
69741
69717
  5. The \`label\` of the user's selected customer will arrive as a message. Proceed to the next step
69742
- 6. Call \`updateConnectionContext\`:
69743
- - \`customer\`: The selected customer's display name
69744
- - \`customerId\`: The selected customer ID
69745
- - \`note\`: Brief description of the setup
69746
69718
 
69747
69719
  #### Constraints
69748
69720
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -70585,10 +70557,6 @@ var googleAnalyticsOauthOnboarding = new ConnectorOnboarding({
70585
70557
  - \`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
70586
70558
  - \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
70587
70559
  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
70588
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
70589
- - \`property\`: \u9078\u629E\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u8868\u793A\u540D
70590
- - \`propertyId\`: \u9078\u629E\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3ID
70591
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
70592
70560
 
70593
70561
  #### \u5236\u7D04
70594
70562
  - **\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
@@ -70607,10 +70575,6 @@ var googleAnalyticsOauthOnboarding = new ConnectorOnboarding({
70607
70575
  - \`options\`: The property list. Each option's \`label\` should be \`Display Name (id: propertyId)\`, \`value\` should be the property ID
70608
70576
  - If **0 properties** are returned, abort setup and inform the user that no accessible properties are available
70609
70577
  5. The \`label\` of the user's selected property will arrive as a message. Proceed to the next step
70610
- 6. Call \`updateConnectionContext\`:
70611
- - \`property\`: The selected property's display name
70612
- - \`propertyId\`: The selected property ID
70613
- - \`note\`: Brief description of the setup
70614
70578
 
70615
70579
  #### Constraints
70616
70580
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -71182,11 +71146,6 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
71182
71146
  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:
71183
71147
  - \`parameterSlug\`: \`"impersonate-email"\`
71184
71148
  - \`options\`: \`[{ value: <ownerEmail>, label: <ownerEmail> }]\`
71185
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u5BFE\u8C61\u60C5\u5831\u3092\u8A18\u9332\u3059\u308B:
71186
- - \`user\`: \u6700\u7D42\u7684\u306B\u8A2D\u5B9A\u3057\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
71187
- - \`calendar\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u540D
71188
- - \`calendarId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
71189
- - \`note\`: \u300CDomain-wide Delegation\u3067 {email} \u306E {calendar} \u306B\u30A2\u30AF\u30BB\u30B9\u300D\u306A\u3069\u306E\u8AAC\u660E
71190
71149
 
71191
71150
  #### \u5236\u7D04
71192
71151
  - **\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
@@ -71209,11 +71168,6 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
71209
71168
  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:
71210
71169
  - \`parameterSlug\`: \`"impersonate-email"\`
71211
71170
  - \`options\`: \`[{ value: <ownerEmail>, label: <ownerEmail> }]\`
71212
- 6. Call \`updateConnectionContext\` to record the target:
71213
- - \`user\`: The final configured email address
71214
- - \`calendar\`: The selected calendar's name
71215
- - \`calendarId\`: The selected calendar ID
71216
- - \`note\`: A description such as "Accessing {email}'s {calendar} via Domain-wide Delegation"
71217
71171
 
71218
71172
  #### Constraints
71219
71173
  - **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
@@ -71639,10 +71593,6 @@ var googleCalendarOauthOnboarding = new ConnectorOnboarding({
71639
71593
  3. \`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3059:
71640
71594
  - \`parameterSlug\`: \`"calendar-id"\`
71641
71595
  - \`value\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
71642
- 4. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
71643
- - \`calendar\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u540D
71644
- - \`calendarId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
71645
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
71646
71596
 
71647
71597
  #### \u5236\u7D04
71648
71598
  - **\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
@@ -71655,10 +71605,6 @@ var googleCalendarOauthOnboarding = new ConnectorOnboarding({
71655
71605
  3. Call \`updateConnectionParameters\`:
71656
71606
  - \`parameterSlug\`: \`"calendar-id"\`
71657
71607
  - \`value\`: The selected calendar ID
71658
- 4. Call \`updateConnectionContext\`:
71659
- - \`calendar\`: The selected calendar's name
71660
- - \`calendarId\`: The selected calendar ID
71661
- - \`note\`: Brief description of the setup
71662
71608
 
71663
71609
  #### Constraints
71664
71610
  - **Do NOT fetch event data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -72099,7 +72045,9 @@ Authentication is handled automatically via OAuth proxy.`,
72099
72045
  });
72100
72046
  const data = await response.json();
72101
72047
  if (!response.ok) {
72102
- const errorMessage = typeof data?.error === "string" ? data.error : typeof data?.message === "string" ? data.message : `HTTP ${response.status} ${response.statusText}`;
72048
+ const googleError = data?.error && typeof data.error === "object" ? data.error : null;
72049
+ const googleErrorMessage = googleError && typeof googleError.message === "string" ? googleError.status && typeof googleError.status === "string" ? `${googleError.status}: ${googleError.message}` : googleError.message : null;
72050
+ const errorMessage = googleErrorMessage ?? (typeof data?.error === "string" ? data.error : typeof data?.message === "string" ? data.message : `HTTP ${response.status} ${response.statusText}`);
72103
72051
  return { success: false, error: errorMessage };
72104
72052
  }
72105
72053
  return { success: true, status: response.status, data };
@@ -73458,9 +73406,6 @@ var hubspotOnboarding = new ConnectorOnboarding({
73458
73406
  - \`method\`: \`"GET"\`
73459
73407
  - \`path\`: \`"/account-info/v3/details"\`
73460
73408
  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
73461
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
73462
- - \`account\`: HubSpot\u30A2\u30AB\u30A6\u30F3\u30C8\u540D\u307E\u305F\u306FID
73463
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
73464
73409
 
73465
73410
  #### \u5236\u7D04
73466
73411
  - **\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
@@ -73471,9 +73416,6 @@ var hubspotOnboarding = new ConnectorOnboarding({
73471
73416
  - \`method\`: \`"GET"\`
73472
73417
  - \`path\`: \`"/account-info/v3/details"\`
73473
73418
  2. If an error is returned, ask the user to check the OAuth connection settings
73474
- 3. Call \`updateConnectionContext\`:
73475
- - \`account\`: HubSpot account name or ID
73476
- - \`note\`: Brief description of the setup
73477
73419
 
73478
73420
  #### Constraints
73479
73421
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -73753,9 +73695,6 @@ var stripeOnboarding = new ConnectorOnboarding({
73753
73695
  - \`method\`: \`"GET"\`
73754
73696
  - \`path\`: \`"/v1/accounts"\`
73755
73697
  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
73756
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
73757
- - \`account\`: Stripe\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831
73758
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
73759
73698
 
73760
73699
  #### \u5236\u7D04
73761
73700
  - **\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
@@ -73766,9 +73705,6 @@ var stripeOnboarding = new ConnectorOnboarding({
73766
73705
  - \`method\`: \`"GET"\`
73767
73706
  - \`path\`: \`"/v1/accounts"\`
73768
73707
  2. If an error is returned, ask the user to check the OAuth connection settings
73769
- 3. Call \`updateConnectionContext\`:
73770
- - \`account\`: Stripe account info
73771
- - \`note\`: Brief description of the setup
73772
73708
 
73773
73709
  #### Constraints
73774
73710
  - **Do NOT read payment data during setup**. Only the metadata request specified in the steps above is allowed
@@ -74049,8 +73985,6 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
74049
73985
  - \`method\`: \`"GET"\`
74050
73986
  - \`path\`: \`"/v1/balance"\`
74051
73987
  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
74052
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
74053
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
74054
73988
 
74055
73989
  #### \u5236\u7D04
74056
73990
  - **\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
@@ -74061,8 +73995,6 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
74061
73995
  - \`method\`: \`"GET"\`
74062
73996
  - \`path\`: \`"/v1/balance"\`
74063
73997
  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)
74064
- 3. Call \`updateConnectionContext\`:
74065
- - \`note\`: Brief description of the setup
74066
73998
 
74067
73999
  #### Constraints
74068
74000
  - **Do NOT read payment data during setup**. Only the metadata request specified in the steps above is allowed
@@ -74087,7 +74019,7 @@ var stripeApiKeyConnector = new ConnectorPlugin({
74087
74019
  description: "Connect to Stripe for payment, customer, and subscription data using a Secret API Key or Restricted API Key.",
74088
74020
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2QNK0u2doqp41uL0POS4Ks/7a92367e2388ec77c7f4ada143606f9a/stripe.jpeg",
74089
74021
  parameters: parameters22,
74090
- releaseFlag: { dev1: true, dev2: false, prod: false },
74022
+ releaseFlag: { dev1: true, dev2: true, prod: true },
74091
74023
  onboarding: stripeApiKeyOnboarding,
74092
74024
  systemPrompt: {
74093
74025
  en: `### Tools
@@ -74372,10 +74304,6 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74372
74304
  - \`method\`: \`"GET"\`
74373
74305
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74374
74306
  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
74375
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
74376
- - \`base\`: \u30D9\u30FC\u30B9ID
74377
- - \`tables\`: \u30C6\u30FC\u30D6\u30EB\u540D\u4E00\u89A7\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09
74378
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
74379
74307
 
74380
74308
  #### \u5236\u7D04
74381
74309
  - **\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
@@ -74391,10 +74319,6 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74391
74319
  - \`method\`: \`"GET"\`
74392
74320
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74393
74321
  5. If an error is returned, ask the user to check the base sharing settings
74394
- 6. Call \`updateConnectionContext\`:
74395
- - \`base\`: The base ID
74396
- - \`tables\`: Table names (comma-separated)
74397
- - \`note\`: Brief description of the setup
74398
74322
 
74399
74323
  #### Constraints
74400
74324
  - **Do NOT read table record data during setup**. Only the metadata request specified in the steps above is allowed
@@ -74978,7 +74902,7 @@ var kintoneApiTokenConnector = new ConnectorPlugin({
74978
74902
  description: "Connect to kintone for business application data retrieval and analytics using API token authentication.",
74979
74903
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/76nPGMJFZkMFE3UQNo2JFy/e71dc5f5d5cec1306ce0e17aafbfd9f0/kintone.png",
74980
74904
  parameters: parameters25,
74981
- releaseFlag: { dev1: true, dev2: false, prod: false },
74905
+ releaseFlag: { dev1: true, dev2: true, prod: true },
74982
74906
  onboarding: kintoneApiTokenOnboarding,
74983
74907
  systemPrompt: {
74984
74908
  en: `### Tools
@@ -76316,7 +76240,7 @@ var amplitudeConnector = new ConnectorPlugin({
76316
76240
  description: "Connect to Amplitude for product analytics and user behavior data.",
76317
76241
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2UBJSdRlFJaLq52WUCTBEB/308b59b374cf6c662ac70989860bffd7/amplitude-icon.svg",
76318
76242
  parameters: parameters32,
76319
- releaseFlag: { dev1: true, dev2: false, prod: false },
76243
+ releaseFlag: { dev1: true, dev2: true, prod: true },
76320
76244
  onboarding: amplitudeOnboarding,
76321
76245
  systemPrompt: {
76322
76246
  en: `### Tools
@@ -76569,7 +76493,7 @@ var attioConnector = new ConnectorPlugin({
76569
76493
  description: "Connect to Attio for CRM data and relationship intelligence.",
76570
76494
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2qqx99vvXJojUM3tSrSWPX/1e7c35e13da6b365b8b475c1effe568f/attio.svg",
76571
76495
  parameters: parameters33,
76572
- releaseFlag: { dev1: true, dev2: false, prod: false },
76496
+ releaseFlag: { dev1: true, dev2: true, prod: true },
76573
76497
  onboarding: attioOnboarding,
76574
76498
  systemPrompt: {
76575
76499
  en: `### Tools
@@ -77301,9 +77225,6 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
77301
77225
  - \`method\`: \`"GET"\`
77302
77226
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77303
77227
  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
77304
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
77305
- - \`shop\`: Shopify\u30B7\u30E7\u30C3\u30D7\u60C5\u5831
77306
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
77307
77228
 
77308
77229
  #### \u5236\u7D04
77309
77230
  - **\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
@@ -77314,9 +77235,6 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
77314
77235
  - \`method\`: \`"GET"\`
77315
77236
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77316
77237
  2. If an error is returned, ask the user to check the OAuth connection settings
77317
- 3. Call \`updateConnectionContext\`:
77318
- - \`shop\`: Shopify shop info
77319
- - \`note\`: Brief description of the setup
77320
77238
 
77321
77239
  #### Constraints
77322
77240
  - **Do NOT read business data (orders, customers, etc.) during setup**. Only the metadata request specified in the steps above is allowed
@@ -77586,7 +77504,7 @@ var hubspotConnector = new ConnectorPlugin({
77586
77504
  description: "Connect to HubSpot CRM for contacts, deals, companies, and marketing data using a Personal Access Key.",
77587
77505
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5UcSkKkzhUMA4RsM45ynuo/43b967e36915ca0fc5d277684b204320/hubspot.svg",
77588
77506
  parameters: parameters36,
77589
- releaseFlag: { dev1: true, dev2: false, prod: false },
77507
+ releaseFlag: { dev1: true, dev2: true, prod: true },
77590
77508
  onboarding: hubspotOnboarding2,
77591
77509
  systemPrompt: {
77592
77510
  en: `### Tools
@@ -77854,7 +77772,7 @@ var jiraConnector = new ConnectorPlugin({
77854
77772
  description: "Connect to Jira Cloud for issue tracking, project management, and workflow data retrieval using API token authentication.",
77855
77773
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5zt4yjb36szSPPkCECYlPL/bc3e7223dc84fb16a1cce53a80f5afcc/jira.png",
77856
77774
  parameters: parameters37,
77857
- releaseFlag: { dev1: true, dev2: false, prod: false },
77775
+ releaseFlag: { dev1: true, dev2: true, prod: true },
77858
77776
  onboarding: jiraOnboarding,
77859
77777
  systemPrompt: {
77860
77778
  en: `### Tools
@@ -78129,7 +78047,7 @@ var linearConnector = new ConnectorPlugin({
78129
78047
  description: "Connect to Linear for project management data \u2014 issues, projects, teams, cycles, and more.",
78130
78048
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oR77h6TeniXGdmnp2P2LX/a2ac8630ae52d164363adb0c695d9f0b/linear.webp",
78131
78049
  parameters: parameters38,
78132
- releaseFlag: { dev1: true, dev2: false, prod: false },
78050
+ releaseFlag: { dev1: true, dev2: true, prod: true },
78133
78051
  onboarding: linearOnboarding,
78134
78052
  systemPrompt: {
78135
78053
  en: `### Tools
@@ -78391,7 +78309,7 @@ var asanaConnector = new ConnectorPlugin({
78391
78309
  description: "Connect to Asana for project management, task tracking, and team collaboration data.",
78392
78310
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3eIdaoqzIIZs2Md0OoDJMf/2fa66e0841adb985da4d3120466f3ec4/asana-icon.png",
78393
78311
  parameters: parameters39,
78394
- releaseFlag: { dev1: true, dev2: false, prod: false },
78312
+ releaseFlag: { dev1: true, dev2: true, prod: true },
78395
78313
  onboarding: asanaOnboarding,
78396
78314
  systemPrompt: {
78397
78315
  en: `### Tools
@@ -78716,7 +78634,7 @@ var clickhouseConnector = new ConnectorPlugin({
78716
78634
  description: "Connect to ClickHouse for high-performance columnar analytics and real-time data processing.",
78717
78635
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/MencimqP92UmucqstLl51/d9f2b6160206f5454b26e223a763ab8f/clickhouse.png",
78718
78636
  parameters: parameters40,
78719
- releaseFlag: { dev1: true, dev2: false, prod: false },
78637
+ releaseFlag: { dev1: true, dev2: true, prod: true },
78720
78638
  onboarding: clickhouseOnboarding,
78721
78639
  systemPrompt: {
78722
78640
  en: `### Tools
@@ -79124,7 +79042,7 @@ var mongodbConnector = new ConnectorPlugin({
79124
79042
  description: "Connect to MongoDB for document-oriented data storage and querying.",
79125
79043
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/48JSUx9HE6oSa9JrHGg2E1/12b4cac65924cac3641d4bafcef37dbe/mongodb-icon.webp",
79126
79044
  parameters: parameters41,
79127
- releaseFlag: { dev1: true, dev2: false, prod: false },
79045
+ releaseFlag: { dev1: true, dev2: true, prod: true },
79128
79046
  onboarding: mongodbOnboarding,
79129
79047
  systemPrompt: {
79130
79048
  en: `### Tools
@@ -79308,7 +79226,7 @@ var notionConnector = new ConnectorPlugin({
79308
79226
  description: "Connect to Notion to query databases, pages, and workspace content using an Internal Integration Token.",
79309
79227
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
79310
79228
  parameters: parameters42,
79311
- releaseFlag: { dev1: true, dev2: false, prod: false },
79229
+ releaseFlag: { dev1: true, dev2: true, prod: true },
79312
79230
  onboarding: notionOnboarding,
79313
79231
  systemPrompt: {
79314
79232
  en: `### Tools
@@ -79579,9 +79497,6 @@ var notionOauthOnboarding = new ConnectorOnboarding({
79579
79497
  - \`method\`: \`"GET"\`
79580
79498
  - \`path\`: \`"/users/me"\`
79581
79499
  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
79582
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
79583
- - \`account\`: Notion\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u540D\u307E\u305F\u306F\u30DC\u30C3\u30C8\u540D
79584
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
79585
79500
 
79586
79501
  #### \u5236\u7D04
79587
79502
  - **\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
@@ -79592,9 +79507,6 @@ var notionOauthOnboarding = new ConnectorOnboarding({
79592
79507
  - \`method\`: \`"GET"\`
79593
79508
  - \`path\`: \`"/users/me"\`
79594
79509
  2. If an error is returned, ask the user to check the OAuth connection settings
79595
- 3. Call \`updateConnectionContext\`:
79596
- - \`account\`: Notion workspace name or bot name
79597
- - \`note\`: Brief description of the setup
79598
79510
 
79599
79511
  #### Constraints
79600
79512
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -79624,7 +79536,7 @@ var notionOauthConnector = new ConnectorPlugin({
79624
79536
  description: "Connect to Notion to query databases, pages, and workspace content using OAuth.",
79625
79537
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
79626
79538
  parameters: parameters43,
79627
- releaseFlag: { dev1: true, dev2: false, prod: false },
79539
+ releaseFlag: { dev1: true, dev2: true, prod: true },
79628
79540
  onboarding: notionOauthOnboarding,
79629
79541
  proxyPolicy: {
79630
79542
  allowlist: [
@@ -79868,10 +79780,6 @@ var metaAdsOnboarding = new ConnectorOnboarding({
79868
79780
  - \`parameterSlug\`: \`"ad-account-id"\`
79869
79781
  - \`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
79870
79782
  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
79871
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
79872
- - \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
79873
- - \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
79874
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
79875
79783
 
79876
79784
  #### \u5236\u7D04
79877
79785
  - **\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
@@ -79884,10 +79792,6 @@ var metaAdsOnboarding = new ConnectorOnboarding({
79884
79792
  - \`parameterSlug\`: \`"ad-account-id"\`
79885
79793
  - \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
79886
79794
  4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
79887
- 5. Call \`updateConnectionContext\`:
79888
- - \`adAccount\`: The selected account's display name
79889
- - \`adAccountId\`: The selected account ID
79890
- - \`note\`: Brief description of the setup
79891
79795
 
79892
79796
  #### Constraints
79893
79797
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -80277,10 +80181,6 @@ var metaAdsOauthOnboarding = new ConnectorOnboarding({
80277
80181
  - \`parameterSlug\`: \`"ad-account-id"\`
80278
80182
  - \`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
80279
80183
  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
80280
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
80281
- - \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
80282
- - \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
80283
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
80284
80184
 
80285
80185
  #### \u5236\u7D04
80286
80186
  - **\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
@@ -80293,10 +80193,6 @@ var metaAdsOauthOnboarding = new ConnectorOnboarding({
80293
80193
  - \`parameterSlug\`: \`"ad-account-id"\`
80294
80194
  - \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
80295
80195
  4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
80296
- 5. Call \`updateConnectionContext\`:
80297
- - \`adAccount\`: The selected account's display name
80298
- - \`adAccountId\`: The selected account ID
80299
- - \`note\`: Brief description of the setup
80300
80196
 
80301
80197
  #### Constraints
80302
80198
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -80739,10 +80635,6 @@ var tiktokAdsOnboarding = new ConnectorOnboarding({
80739
80635
  - \`parameterSlug\`: \`"advertiser-id"\`
80740
80636
  - \`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
80741
80637
  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
80742
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
80743
- - \`advertiser\`: \u9078\u629E\u3055\u308C\u305F\u5E83\u544A\u4E3B\u306E\u8868\u793A\u540D
80744
- - \`advertiserId\`: \u9078\u629E\u3055\u308C\u305F\u5E83\u544A\u4E3BID
80745
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
80746
80638
 
80747
80639
  #### \u5236\u7D04
80748
80640
  - **\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
@@ -80755,10 +80647,6 @@ var tiktokAdsOnboarding = new ConnectorOnboarding({
80755
80647
  - \`parameterSlug\`: \`"advertiser-id"\`
80756
80648
  - \`options\`: The advertiser list. Each option's \`label\` should be \`Advertiser Name (id: advertiserId)\`, \`value\` should be the advertiser ID
80757
80649
  4. The \`label\` of the user's selected advertiser will arrive as a message. Proceed to the next step
80758
- 5. Call \`updateConnectionContext\`:
80759
- - \`advertiser\`: The selected advertiser's display name
80760
- - \`advertiserId\`: The selected advertiser ID
80761
- - \`note\`: Brief description of the setup
80762
80650
 
80763
80651
  #### Constraints
80764
80652
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -81237,7 +81125,7 @@ var mailchimpConnector = new ConnectorPlugin({
81237
81125
  description: "Connect to Mailchimp for email marketing, audiences, campaigns, and analytics.",
81238
81126
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19Rac6B8eGiLpQb4lKMbG3/10f567f85572aeb16f2ee6aaa6602987/mailchimp.png",
81239
81127
  parameters: parameters47,
81240
- releaseFlag: { dev1: true, dev2: false, prod: false },
81128
+ releaseFlag: { dev1: true, dev2: true, prod: true },
81241
81129
  onboarding: mailchimpOnboarding,
81242
81130
  systemPrompt: {
81243
81131
  en: `### Tools
@@ -81883,7 +81771,7 @@ var customerioConnector = new ConnectorPlugin({
81883
81771
  description: "Connect to Customer.io App API for reading customer data, managing campaigns, segments, and sending transactional messages.",
81884
81772
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/nngohabT7oHDIgQYAVBpz/6f6c7662ef4692eb9869e3e69dd57114/customerio.png",
81885
81773
  parameters: parameters49,
81886
- releaseFlag: { dev1: true, dev2: false, prod: false },
81774
+ releaseFlag: { dev1: true, dev2: true, prod: true },
81887
81775
  onboarding: customerioOnboarding,
81888
81776
  systemPrompt: {
81889
81777
  en: `### Tools
@@ -82204,10 +82092,6 @@ var gmailOnboarding = new ConnectorOnboarding({
82204
82092
  5. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82205
82093
  - \`method\`: \`"GET"\`
82206
82094
  - \`path\`: \`"/me/labels"\`
82207
- 6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
82208
- - \`email\`: \u8A2D\u5B9A\u3057\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
82209
- - \`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
82210
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
82211
82095
 
82212
82096
  #### \u5236\u7D04
82213
82097
  - **\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
@@ -82231,10 +82115,6 @@ var gmailOnboarding = new ConnectorOnboarding({
82231
82115
  5. Call \`${requestToolName7}\` to get the label list:
82232
82116
  - \`method\`: \`"GET"\`
82233
82117
  - \`path\`: \`"/me/labels"\`
82234
- 6. Call \`updateConnectionContext\`:
82235
- - \`email\`: The configured email address
82236
- - \`labels\`: Key label names (comma-separated, including system labels like INBOX, SENT, DRAFT, SPAM, TRASH)
82237
- - \`note\`: Brief description of the setup
82238
82118
 
82239
82119
  #### Constraints
82240
82120
  - **Do NOT read message bodies during setup**. Only the profile and label list requests specified above are allowed
@@ -82259,7 +82139,7 @@ var gmailConnector = new ConnectorPlugin({
82259
82139
  description: "Connect to Gmail for email data access using a service account with domain-wide delegation. Read-only access to messages, threads, and labels.",
82260
82140
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4V3rfaSc1ksFIt2eHBNIwJ/7f3be41a154a6d96dcf229ed0e5858c9/Gmail_icon__2020_.svg.png",
82261
82141
  parameters: parameters50,
82262
- releaseFlag: { dev1: true, dev2: false, prod: false },
82142
+ releaseFlag: { dev1: true, dev2: true, prod: true },
82263
82143
  onboarding: gmailOnboarding,
82264
82144
  systemPrompt: {
82265
82145
  en: `### Tools
@@ -82596,10 +82476,6 @@ var gmailOnboarding2 = new ConnectorOnboarding({
82596
82476
  3. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82597
82477
  - \`method\`: \`"GET"\`
82598
82478
  - \`path\`: \`"/me/labels"\`
82599
- 4. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
82600
- - \`email\`: \u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
82601
- - \`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
82602
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
82603
82479
 
82604
82480
  #### \u5236\u7D04
82605
82481
  - **\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
@@ -82613,10 +82489,6 @@ var gmailOnboarding2 = new ConnectorOnboarding({
82613
82489
  3. Call \`${requestToolName8}\` to get the label list:
82614
82490
  - \`method\`: \`"GET"\`
82615
82491
  - \`path\`: \`"/me/labels"\`
82616
- 4. Call \`updateConnectionContext\`:
82617
- - \`email\`: The user's email address
82618
- - \`labels\`: Key label names (comma-separated, including system labels like INBOX, SENT, DRAFT, SPAM, TRASH)
82619
- - \`note\`: Brief description of the setup
82620
82492
 
82621
82493
  #### Constraints
82622
82494
  - **Do NOT read message bodies during setup**. Only the profile and label list requests specified above are allowed
@@ -82972,10 +82844,6 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
82972
82844
  - \`parameterSlug\`: \`"ad-account-id"\`
82973
82845
  - \`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
82974
82846
  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
82975
- 5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
82976
- - \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
82977
- - \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
82978
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
82979
82847
 
82980
82848
  #### \u5236\u7D04
82981
82849
  - **\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
@@ -82988,10 +82856,6 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
82988
82856
  - \`parameterSlug\`: \`"ad-account-id"\`
82989
82857
  - \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
82990
82858
  4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
82991
- 5. Call \`updateConnectionContext\`:
82992
- - \`adAccount\`: The selected account's display name
82993
- - \`adAccountId\`: The selected account ID
82994
- - \`note\`: Brief description of the setup
82995
82859
 
82996
82860
  #### Constraints
82997
82861
  - **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
@@ -83528,7 +83392,7 @@ var zendeskConnector = new ConnectorPlugin({
83528
83392
  description: "Connect to Zendesk Support for tickets, users, organizations, and customer service data using an API token.",
83529
83393
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7e9Q7PwV6MJRJMj543m2gl/55385fae903ccfa1599e35be9d3516aa/zendesk-icon.svg",
83530
83394
  parameters: parameters53,
83531
- releaseFlag: { dev1: true, dev2: false, prod: false },
83395
+ releaseFlag: { dev1: true, dev2: true, prod: true },
83532
83396
  onboarding: zendeskOnboarding,
83533
83397
  systemPrompt: {
83534
83398
  en: `### Tools
@@ -83834,9 +83698,6 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
83834
83698
  - \`method\`: \`"GET"\`
83835
83699
  - \`path\`: \`"/api/v2/account/settings.json"\`
83836
83700
  2. If an error is returned, ask the user to check the OAuth connection settings
83837
- 3. Call \`updateConnectionContext\`:
83838
- - \`account\`: Zendesk subdomain or account name
83839
- - \`note\`: Brief description of the setup
83840
83701
 
83841
83702
  #### Constraints
83842
83703
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -83847,9 +83708,6 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
83847
83708
  - \`method\`: \`"GET"\`
83848
83709
  - \`path\`: \`"/api/v2/account/settings.json"\`
83849
83710
  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
83850
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
83851
- - \`account\`: Zendesk\u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\u307E\u305F\u306F\u30A2\u30AB\u30A6\u30F3\u30C8\u540D
83852
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
83853
83711
 
83854
83712
  #### \u5236\u7D04
83855
83713
  - **\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
@@ -84151,7 +84009,7 @@ var intercomConnector = new ConnectorPlugin({
84151
84009
  description: "Connect to Intercom for contacts, conversations, companies, and customer engagement data using an Access Token.",
84152
84010
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/sb2cRMGClpId0LKiSqsok/ae90a0849f21ffe3faf73e04a5676b45/intercom.svg",
84153
84011
  parameters: parameters55,
84154
- releaseFlag: { dev1: true, dev2: false, prod: false },
84012
+ releaseFlag: { dev1: true, dev2: true, prod: true },
84155
84013
  onboarding: intercomOnboarding,
84156
84014
  systemPrompt: {
84157
84015
  en: `### Tools
@@ -84480,9 +84338,6 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
84480
84338
  - \`method\`: \`"GET"\`
84481
84339
  - \`path\`: \`"/me"\`
84482
84340
  2. If an error is returned, ask the user to check the OAuth connection settings
84483
- 3. Call \`updateConnectionContext\`:
84484
- - \`account\`: Intercom workspace name or admin email
84485
- - \`note\`: Brief description of the setup
84486
84341
 
84487
84342
  #### Constraints
84488
84343
  - **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
@@ -84493,9 +84348,6 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
84493
84348
  - \`method\`: \`"GET"\`
84494
84349
  - \`path\`: \`"/me"\`
84495
84350
  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
84496
- 3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
84497
- - \`account\`: Intercom\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u540D\u307E\u305F\u306F\u7BA1\u7406\u8005\u30E1\u30FC\u30EB
84498
- - \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
84499
84351
 
84500
84352
  #### \u5236\u7D04
84501
84353
  - **\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
@@ -84871,7 +84723,7 @@ var mixpanelConnector = new ConnectorPlugin({
84871
84723
  description: "Connect to Mixpanel for product analytics, event tracking, and user behavior analysis.",
84872
84724
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7ykz0vNRjMqvTVrxS8wsj1/b2cd795be5b373877dee77cc6147c758/images__3_.png",
84873
84725
  parameters: parameters57,
84874
- releaseFlag: { dev1: true, dev2: false, prod: false },
84726
+ releaseFlag: { dev1: true, dev2: true, prod: true },
84875
84727
  onboarding: mixpanelOnboarding,
84876
84728
  systemPrompt: {
84877
84729
  en: `### Tools
@@ -85366,7 +85218,7 @@ var backlogConnector = new ConnectorPlugin({
85366
85218
  description: "Connect to Nulab Backlog for project management, issue tracking, and wiki data retrieval using API key authentication.",
85367
85219
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6KcVBGf3mUHnuCOQgQMvtT/e8558c7990e40e3be46948e9476190fb/backlog-favicon.svg",
85368
85220
  parameters: parameters59,
85369
- releaseFlag: { dev1: true, dev2: true, prod: false },
85221
+ releaseFlag: { dev1: true, dev2: true, prod: true },
85370
85222
  onboarding: backlogOnboarding,
85371
85223
  systemPrompt: {
85372
85224
  en: `### Tools
@@ -85804,7 +85656,7 @@ var gammaConnector = new ConnectorPlugin({
85804
85656
  description: "Connect to Gamma for AI-powered presentation, document, webpage, and social post generation.",
85805
85657
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/KoMGPpPcgtB9oDYe1OBjS/1ba7eb061c4497106bf6d249866dc471/gamma.svg",
85806
85658
  parameters: parameters60,
85807
- releaseFlag: { dev1: true, dev2: false, prod: false },
85659
+ releaseFlag: { dev1: true, dev2: true, prod: true },
85808
85660
  onboarding: gammaOnboarding,
85809
85661
  systemPrompt: {
85810
85662
  en: `### Tools
@@ -86084,7 +85936,7 @@ var sentryConnector = new ConnectorPlugin({
86084
85936
  description: "Connect to Sentry for error tracking and performance monitoring data.",
86085
85937
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4B8ZEGFGjTeMWNnXQb1dAL/ac10f813f02353f5b0cbe64fb5c06d8f/sentry.svg",
86086
85938
  parameters: parameters61,
86087
- releaseFlag: { dev1: true, dev2: false, prod: false },
85939
+ releaseFlag: { dev1: true, dev2: true, prod: true },
86088
85940
  onboarding: sentryOnboarding,
86089
85941
  systemPrompt: {
86090
85942
  en: `### Tools
@@ -86288,6 +86140,713 @@ await sentry.updateIssue("12345", { status: "resolved" });
86288
86140
  }
86289
86141
  });
86290
86142
 
86143
+ // ../connectors/src/connectors/salesforce/setup.ts
86144
+ var salesforceOnboarding = new ConnectorOnboarding({
86145
+ connectionSetupInstructions: {
86146
+ en: `#### Create a Connected App in Salesforce
86147
+ 1. In Salesforce Setup, go to App Manager \u2192 New Connected App
86148
+ 2. Under API (Enable OAuth Settings), check "Enable OAuth Settings"
86149
+ 3. Add OAuth scopes: "Manage user data via APIs (api)" and "Perform requests at any time (refresh_token, offline_access)"
86150
+ 4. Save and note the Consumer Key (client_id) and Consumer Secret (client_secret)
86151
+
86152
+ #### Allow Username-Password Flow
86153
+ 1. Go to Setup \u2192 Identity \u2192 OAuth and OpenID Connect Settings
86154
+ 2. Enable "Allow OAuth Username-Password Flows"
86155
+
86156
+ #### Reset your Security Token
86157
+ 1. Go to Settings \u2192 My Personal Information \u2192 Reset My Security Token
86158
+ 2. Salesforce emails you a new security token \u2014 append it to your password when entering the Password parameter (password + securityToken)
86159
+
86160
+ #### Sandbox vs Production
86161
+ - Leave Use Sandbox as "false" (or empty) to connect to production (login.salesforce.com)
86162
+ - Set Use Sandbox to "true" to connect to a sandbox (test.salesforce.com)`,
86163
+ ja: `#### Salesforce \u3067 Connected App \u3092\u4F5C\u6210
86164
+ 1. Setup \u2192 App Manager \u2192 New Connected App
86165
+ 2. API (Enable OAuth Settings) \u30BB\u30AF\u30B7\u30E7\u30F3\u3067 "Enable OAuth Settings" \u3092\u6709\u52B9\u5316
86166
+ 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
86167
+ 4. \u4FDD\u5B58\u5F8C\u3001Consumer Key (client_id) \u3068 Consumer Secret (client_secret) \u3092\u63A7\u3048\u308B
86168
+
86169
+ #### Username-Password Flow \u3092\u8A31\u53EF
86170
+ 1. Setup \u2192 Identity \u2192 OAuth and OpenID Connect Settings
86171
+ 2. "Allow OAuth Username-Password Flows" \u3092\u6709\u52B9\u5316
86172
+
86173
+ #### Security Token \u306E\u767A\u884C
86174
+ 1. \u500B\u4EBA\u8A2D\u5B9A \u2192 My Personal Information \u2192 Reset My Security Token
86175
+ 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
86176
+
86177
+ #### Sandbox / Production
86178
+ - \u672C\u756A (login.salesforce.com) \u306E\u5834\u5408: Use Sandbox \u3092 "false" \u307E\u305F\u306F\u672A\u5165\u529B
86179
+ - Sandbox (test.salesforce.com) \u306E\u5834\u5408: Use Sandbox \u3092 "true" \u306B\u8A2D\u5B9A`
86180
+ },
86181
+ dataOverviewInstructions: {
86182
+ en: `1. Call salesforce_request with GET /services/data/v60.0/sobjects/ to list available sObjects (standard + custom)
86183
+ 2. Call salesforce_request with GET /services/data/v60.0/sobjects/Account/describe to inspect Account fields; repeat for Contact, Opportunity, Lead as needed
86184
+ 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`,
86185
+ 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
86186
+ 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
86187
+ 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`
86188
+ }
86189
+ });
86190
+
86191
+ // ../connectors/src/connectors/salesforce/parameters.ts
86192
+ var parameters62 = {
86193
+ username: new ParameterDefinition({
86194
+ slug: "username",
86195
+ name: "Username",
86196
+ description: "Your Salesforce account username (the email you use to sign in).",
86197
+ envVarBaseKey: "SALESFORCE_USERNAME",
86198
+ type: "text",
86199
+ secret: false,
86200
+ required: true
86201
+ }),
86202
+ password: new ParameterDefinition({
86203
+ slug: "password",
86204
+ name: "Password",
86205
+ 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.",
86206
+ envVarBaseKey: "SALESFORCE_PASSWORD",
86207
+ type: "text",
86208
+ secret: true,
86209
+ required: true
86210
+ }),
86211
+ clientId: new ParameterDefinition({
86212
+ slug: "client-id",
86213
+ name: "Consumer Key",
86214
+ 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.",
86215
+ envVarBaseKey: "SALESFORCE_CLIENT_ID",
86216
+ type: "text",
86217
+ secret: false,
86218
+ required: true
86219
+ }),
86220
+ clientSecret: new ParameterDefinition({
86221
+ slug: "client-secret",
86222
+ name: "Consumer Secret",
86223
+ description: "The Consumer Secret (client_secret) of your Salesforce Connected App.",
86224
+ envVarBaseKey: "SALESFORCE_CLIENT_SECRET",
86225
+ type: "text",
86226
+ secret: true,
86227
+ required: true
86228
+ }),
86229
+ isSandbox: new ParameterDefinition({
86230
+ slug: "is-sandbox",
86231
+ name: "Use Sandbox",
86232
+ description: 'Set to "true" to authenticate against a Salesforce sandbox (test.salesforce.com) instead of production (login.salesforce.com). Defaults to "false".',
86233
+ envVarBaseKey: "SALESFORCE_IS_SANDBOX",
86234
+ type: "text",
86235
+ secret: false,
86236
+ required: false
86237
+ })
86238
+ };
86239
+
86240
+ // ../connectors/src/connectors/salesforce/tools/request.ts
86241
+ import { z as z77 } from "zod";
86242
+ var REQUEST_TIMEOUT_MS59 = 6e4;
86243
+ var inputSchema75 = z77.object({
86244
+ toolUseIntent: z77.string().optional().describe(
86245
+ "Brief description of what you intend to accomplish with this tool call"
86246
+ ),
86247
+ connectionId: z77.string().describe("ID of the Salesforce connection to use"),
86248
+ method: z77.enum(["GET", "POST", "PATCH", "DELETE"]).describe(
86249
+ "HTTP method. GET for reading resources and SOQL queries, POST for creating, PATCH for updating, DELETE for removing."
86250
+ ),
86251
+ path: z77.string().describe(
86252
+ "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/'."
86253
+ ),
86254
+ body: z77.record(z77.string(), z77.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
86255
+ });
86256
+ var outputSchema75 = z77.discriminatedUnion("success", [
86257
+ z77.object({
86258
+ success: z77.literal(true),
86259
+ status: z77.number(),
86260
+ data: z77.record(z77.string(), z77.unknown())
86261
+ }),
86262
+ z77.object({
86263
+ success: z77.literal(false),
86264
+ error: z77.string()
86265
+ })
86266
+ ]);
86267
+ var requestTool47 = new ConnectorTool({
86268
+ name: "request",
86269
+ description: `Send authenticated requests to the Salesforce REST API.
86270
+ 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.
86271
+ 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.
86272
+ Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads rather than paginating /sobjects/{Type} endpoints.`,
86273
+ inputSchema: inputSchema75,
86274
+ outputSchema: outputSchema75,
86275
+ async execute({ connectionId, method, path: path5, body }, connections) {
86276
+ const connection2 = connections.find((c6) => c6.id === connectionId);
86277
+ if (!connection2) {
86278
+ return {
86279
+ success: false,
86280
+ error: `Connection ${connectionId} not found`
86281
+ };
86282
+ }
86283
+ console.log(
86284
+ `[connector-request] salesforce/${connection2.name}: ${method} ${path5}`
86285
+ );
86286
+ try {
86287
+ const username = parameters62.username.getValue(connection2);
86288
+ const password = parameters62.password.getValue(connection2);
86289
+ const clientId = parameters62.clientId.getValue(connection2);
86290
+ const clientSecret = parameters62.clientSecret.getValue(connection2);
86291
+ const isSandbox = parameters62.isSandbox.tryGetValue(connection2)?.toLowerCase() === "true";
86292
+ const loginHost = isSandbox ? "https://test.salesforce.com" : "https://login.salesforce.com";
86293
+ const tokenBody = new URLSearchParams({
86294
+ grant_type: "password",
86295
+ client_id: clientId,
86296
+ client_secret: clientSecret,
86297
+ username,
86298
+ password
86299
+ });
86300
+ const tokenRes = await fetch(`${loginHost}/services/oauth2/token`, {
86301
+ method: "POST",
86302
+ headers: {
86303
+ "Content-Type": "application/x-www-form-urlencoded"
86304
+ },
86305
+ body: tokenBody.toString()
86306
+ });
86307
+ if (!tokenRes.ok) {
86308
+ const errText = await tokenRes.text().catch(() => "(unreadable body)");
86309
+ return {
86310
+ success: false,
86311
+ error: `Failed to obtain access token: ${tokenRes.status} ${tokenRes.statusText} \u2014 ${errText}`
86312
+ };
86313
+ }
86314
+ const tokenJson = await tokenRes.json();
86315
+ if (!tokenJson.access_token || !tokenJson.instance_url) {
86316
+ return {
86317
+ success: false,
86318
+ error: "access_token or instance_url not found in token response"
86319
+ };
86320
+ }
86321
+ const url = `${tokenJson.instance_url}${path5.startsWith("/") ? "" : "/"}${path5}`;
86322
+ const controller = new AbortController();
86323
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS59);
86324
+ try {
86325
+ const response = await fetch(url, {
86326
+ method,
86327
+ headers: {
86328
+ Authorization: `Bearer ${tokenJson.access_token}`,
86329
+ "Content-Type": "application/json"
86330
+ },
86331
+ body: body ? JSON.stringify(body) : void 0,
86332
+ signal: controller.signal
86333
+ });
86334
+ const text = await response.text();
86335
+ let data;
86336
+ try {
86337
+ data = text ? JSON.parse(text) : {};
86338
+ } catch {
86339
+ data = { raw: text };
86340
+ }
86341
+ if (!response.ok) {
86342
+ let errorMessage = `HTTP ${response.status} ${response.statusText}`;
86343
+ if (Array.isArray(data) && data.length > 0) {
86344
+ const first = data[0];
86345
+ if (first.message) {
86346
+ errorMessage = first.errorCode ? `${first.errorCode}: ${first.message}` : first.message;
86347
+ }
86348
+ } else if (typeof data.message === "string") {
86349
+ errorMessage = data.message;
86350
+ } else if (typeof data.error === "string") {
86351
+ errorMessage = data.error;
86352
+ }
86353
+ return { success: false, error: errorMessage };
86354
+ }
86355
+ return { success: true, status: response.status, data };
86356
+ } finally {
86357
+ clearTimeout(timeout);
86358
+ }
86359
+ } catch (err) {
86360
+ const msg = err instanceof Error ? err.message : String(err);
86361
+ return { success: false, error: msg };
86362
+ }
86363
+ }
86364
+ });
86365
+
86366
+ // ../connectors/src/connectors/salesforce/index.ts
86367
+ var tools62 = { request: requestTool47 };
86368
+ var salesforceConnector = new ConnectorPlugin({
86369
+ slug: "salesforce",
86370
+ authType: AUTH_TYPES.USER_PASSWORD,
86371
+ name: "Salesforce",
86372
+ description: "Connect to Salesforce CRM for accounts, contacts, opportunities, leads, cases, and custom objects via SOQL and the REST API.",
86373
+ iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6vZlbrUKhxXIiuvWJlb8YB/bbc5e08b88de46c8ed338a74c7d0abb3/salesforce-icon.png",
86374
+ parameters: parameters62,
86375
+ releaseFlag: { dev1: true, dev2: false, prod: false },
86376
+ onboarding: salesforceOnboarding,
86377
+ systemPrompt: {
86378
+ en: `### Tools
86379
+
86380
+ - \`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.
86381
+
86382
+ ### Business Logic
86383
+
86384
+ The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
86385
+
86386
+ SDK methods (client created via \`connection(connectionId)\`):
86387
+ - \`client.request(path, init?)\` \u2014 low-level authenticated fetch against the Salesforce instance URL
86388
+ - \`client.query(soql)\` \u2014 run a SOQL query and return \`{ totalSize, done, records, nextRecordsUrl? }\`
86389
+ - \`client.queryMore(nextRecordsUrl)\` \u2014 fetch the next page of SOQL results
86390
+ - \`client.describeSObject(objectType)\` \u2014 describe an sObject's metadata
86391
+ - \`client.getRecord(objectType, id, options?)\` \u2014 fetch a single record (optionally restrict fields)
86392
+ - \`client.createRecord(objectType, fields)\` \u2014 create a new record
86393
+ - \`client.updateRecord(objectType, id, fields)\` \u2014 patch an existing record
86394
+ - \`client.deleteRecord(objectType, id)\` \u2014 delete a record
86395
+
86396
+ \`\`\`ts
86397
+ import type { Context } from "hono";
86398
+ import { connection } from "@squadbase/vite-server/connectors/salesforce";
86399
+
86400
+ const salesforce = connection("<connectionId>");
86401
+
86402
+ export default async function handler(c: Context) {
86403
+ const { industry, limit = 50 } = await c.req.json<{
86404
+ industry?: string;
86405
+ limit?: number;
86406
+ }>();
86407
+
86408
+ const where = industry
86409
+ ? \`WHERE Industry = '\${industry.replace(/'/g, "\\\\'")}'\`
86410
+ : "";
86411
+ const soql = \`SELECT Id, Name, Industry, AnnualRevenue FROM Account \${where} ORDER BY AnnualRevenue DESC NULLS LAST LIMIT \${limit}\`;
86412
+
86413
+ const { records } = await salesforce.query<{
86414
+ Id: string;
86415
+ Name: string;
86416
+ Industry: string | null;
86417
+ AnnualRevenue: number | null;
86418
+ }>(soql);
86419
+
86420
+ return c.json({ accounts: records });
86421
+ }
86422
+ \`\`\`
86423
+
86424
+ ### Salesforce REST API Reference
86425
+
86426
+ - Login host: \`https://login.salesforce.com\` (production) or \`https://test.salesforce.com\` (sandbox)
86427
+ - Token endpoint: \`POST /services/oauth2/token\` (grant_type=password + client_id/secret + username/password)
86428
+ - Base path after login: \`{instance_url}/services/data/v60.0\`
86429
+ - Authentication: Bearer token (handled automatically per request)
86430
+ - Pagination (SOQL): follow \`nextRecordsUrl\` from the response (absolute path starting with \`/services/data/v60.0/query/...\`)
86431
+
86432
+ #### Common Endpoints
86433
+ - GET \`/services/data/\` \u2014 List available API versions
86434
+ - GET \`/services/data/v60.0/sobjects/\` \u2014 List all sObjects (standard + custom)
86435
+ - GET \`/services/data/v60.0/sobjects/{Type}/describe\` \u2014 Describe an sObject (fields, relationships, picklists)
86436
+ - GET \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Get a record (supports \`?fields=...\`)
86437
+ - POST \`/services/data/v60.0/sobjects/{Type}\` \u2014 Create a record
86438
+ - PATCH \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Update a record
86439
+ - DELETE \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Delete a record
86440
+ - GET \`/services/data/v60.0/query?q={soql}\` \u2014 Run SOQL
86441
+ - GET \`/services/data/v60.0/search?q={sosl}\` \u2014 Run SOSL
86442
+
86443
+ #### SOQL Reference
86444
+ - SELECT column list is required (no \`SELECT *\`)
86445
+ - Filter: \`WHERE\`, \`AND\` / \`OR\`, parent/child relationship fields (e.g., \`Account.Name\`)
86446
+ - Sort: \`ORDER BY field [ASC|DESC] [NULLS FIRST|NULLS LAST]\`
86447
+ - Paginate: \`LIMIT n\`, \`OFFSET m\`; for large result sets, follow \`nextRecordsUrl\` instead of OFFSET
86448
+ - Aggregate: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
86449
+ - Parent-to-child subquery: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``,
86450
+ ja: `### \u30C4\u30FC\u30EB
86451
+
86452
+ - \`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
86453
+
86454
+ ### Business Logic
86455
+
86456
+ \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
86457
+
86458
+ SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
86459
+ - \`client.request(path, init?)\` \u2014 Salesforce \u306E instance URL \u306B\u5BFE\u3059\u308B\u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304D fetch
86460
+ - \`client.query(soql)\` \u2014 SOQL \u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3057 \`{ totalSize, done, records, nextRecordsUrl? }\` \u3092\u8FD4\u5374
86461
+ - \`client.queryMore(nextRecordsUrl)\` \u2014 SOQL \u7D50\u679C\u306E\u6B21\u30DA\u30FC\u30B8\u3092\u53D6\u5F97
86462
+ - \`client.describeSObject(objectType)\` \u2014 sObject \u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
86463
+ - \`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
86464
+ - \`client.createRecord(objectType, fields)\` \u2014 \u30EC\u30B3\u30FC\u30C9\u3092\u65B0\u898F\u4F5C\u6210
86465
+ - \`client.updateRecord(objectType, id, fields)\` \u2014 \u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u66F4\u65B0\uFF08PATCH\uFF09
86466
+ - \`client.deleteRecord(objectType, id)\` \u2014 \u30EC\u30B3\u30FC\u30C9\u3092\u524A\u9664
86467
+
86468
+ \`\`\`ts
86469
+ import type { Context } from "hono";
86470
+ import { connection } from "@squadbase/vite-server/connectors/salesforce";
86471
+
86472
+ const salesforce = connection("<connectionId>");
86473
+
86474
+ export default async function handler(c: Context) {
86475
+ const { industry, limit = 50 } = await c.req.json<{
86476
+ industry?: string;
86477
+ limit?: number;
86478
+ }>();
86479
+
86480
+ const where = industry
86481
+ ? \`WHERE Industry = '\${industry.replace(/'/g, "\\\\'")}'\`
86482
+ : "";
86483
+ const soql = \`SELECT Id, Name, Industry, AnnualRevenue FROM Account \${where} ORDER BY AnnualRevenue DESC NULLS LAST LIMIT \${limit}\`;
86484
+
86485
+ const { records } = await salesforce.query<{
86486
+ Id: string;
86487
+ Name: string;
86488
+ Industry: string | null;
86489
+ AnnualRevenue: number | null;
86490
+ }>(soql);
86491
+
86492
+ return c.json({ accounts: records });
86493
+ }
86494
+ \`\`\`
86495
+
86496
+ ### Salesforce REST API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
86497
+
86498
+ - \u30ED\u30B0\u30A4\u30F3\u30DB\u30B9\u30C8: \`https://login.salesforce.com\`\uFF08\u672C\u756A\uFF09\u307E\u305F\u306F \`https://test.salesforce.com\`\uFF08Sandbox\uFF09
86499
+ - \u30C8\u30FC\u30AF\u30F3\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8: \`POST /services/oauth2/token\`\uFF08grant_type=password + client_id/secret + username/password\uFF09
86500
+ - \u30ED\u30B0\u30A4\u30F3\u5F8C\u306E\u30D9\u30FC\u30B9\u30D1\u30B9: \`{instance_url}/services/data/v60.0\`
86501
+ - \u8A8D\u8A3C: Bearer \u30C8\u30FC\u30AF\u30F3\uFF08\u30EA\u30AF\u30A8\u30B9\u30C8\u3054\u3068\u306B\u81EA\u52D5\u8A2D\u5B9A\uFF09
86502
+ - \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
86503
+
86504
+ #### \u4E3B\u8981\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
86505
+ - GET \`/services/data/\` \u2014 \u5229\u7528\u53EF\u80FD\u306A API \u30D0\u30FC\u30B8\u30E7\u30F3\u4E00\u89A7
86506
+ - GET \`/services/data/v60.0/sobjects/\` \u2014 sObject \u4E00\u89A7\uFF08\u6A19\u6E96 + \u30AB\u30B9\u30BF\u30E0\uFF09
86507
+ - 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
86508
+ - GET \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\uFF08\`?fields=...\` \u3067\u7D5E\u308A\u8FBC\u307F\u53EF\uFF09
86509
+ - POST \`/services/data/v60.0/sobjects/{Type}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u4F5C\u6210
86510
+ - PATCH \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u66F4\u65B0
86511
+ - DELETE \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u524A\u9664
86512
+ - GET \`/services/data/v60.0/query?q={soql}\` \u2014 SOQL \u3092\u5B9F\u884C
86513
+ - GET \`/services/data/v60.0/search?q={sosl}\` \u2014 SOSL \u3092\u5B9F\u884C
86514
+
86515
+ #### SOQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
86516
+ - SELECT \u5217\u306E\u660E\u793A\u304C\u5FC5\u9808\uFF08\`SELECT *\` \u306F\u4E0D\u53EF\uFF09
86517
+ - \u30D5\u30A3\u30EB\u30BF: \`WHERE\`\u3001\`AND\` / \`OR\`\u3001\u89AA\u5B50\u30EA\u30EC\u30FC\u30B7\u30E7\u30F3\u53C2\u7167\uFF08\u4F8B: \`Account.Name\`\uFF09
86518
+ - \u4E26\u3073\u66FF\u3048: \`ORDER BY field [ASC|DESC] [NULLS FIRST|NULLS LAST]\`
86519
+ - \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
86520
+ - \u96C6\u8A08: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
86521
+ - \u89AA\u2192\u5B50\u30B5\u30D6\u30AF\u30A8\u30EA: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``
86522
+ },
86523
+ tools: tools62
86524
+ });
86525
+
86526
+ // ../connectors/src/connectors/influxdb/setup.ts
86527
+ var influxdbOnboarding = new ConnectorOnboarding({
86528
+ connectionSetupInstructions: {
86529
+ en: `#### Generate an API Token
86530
+ 1. Sign in to your InfluxDB Cloud / OSS instance
86531
+ 2. Go to Load Data \u2192 API Tokens \u2192 Generate API Token
86532
+ 3. Create an All-Access or Custom token with at least read permission on your target database/bucket
86533
+ 4. Copy the token into the API Token parameter
86534
+
86535
+ #### Confirm the Database (or Bucket) Name
86536
+ - InfluxDB 3: use the database name
86537
+ - InfluxDB 2: use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
86538
+
86539
+ #### Organization (InfluxDB 2 only)
86540
+ - If you are on InfluxDB 2, set the Organization parameter to the org that owns the bucket
86541
+ - For InfluxDB 3 Cloud you can leave Organization blank`,
86542
+ ja: `#### API \u30C8\u30FC\u30AF\u30F3\u306E\u767A\u884C
86543
+ 1. InfluxDB Cloud / OSS \u306B\u30B5\u30A4\u30F3\u30A4\u30F3
86544
+ 2. Load Data \u2192 API Tokens \u2192 Generate API Token
86545
+ 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
86546
+ 4. \u767A\u884C\u3057\u305F\u30C8\u30FC\u30AF\u30F3\u3092 API Token \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8CBC\u308A\u4ED8\u3051
86547
+
86548
+ #### Database (\u307E\u305F\u306F Bucket) \u540D\u306E\u78BA\u8A8D
86549
+ - InfluxDB 3: database \u540D\u3092\u4F7F\u7528
86550
+ - 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
86551
+
86552
+ #### Organization\uFF08InfluxDB 2 \u306E\u307F\uFF09
86553
+ - InfluxDB 2 \u306E\u5834\u5408\u3001bucket \u3092\u4FDD\u6709\u3059\u308B\u7D44\u7E54\u540D\u3092 Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8A2D\u5B9A
86554
+ - InfluxDB 3 Cloud \u306E\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
86555
+ },
86556
+ dataOverviewInstructions: {
86557
+ en: `1. For InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
86558
+ 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" }
86559
+ 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`,
86560
+ 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
86561
+ 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
86562
+ 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`
86563
+ }
86564
+ });
86565
+
86566
+ // ../connectors/src/connectors/influxdb/parameters.ts
86567
+ var parameters63 = {
86568
+ url: new ParameterDefinition({
86569
+ slug: "url",
86570
+ name: "InfluxDB URL",
86571
+ 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.",
86572
+ envVarBaseKey: "INFLUXDB_URL",
86573
+ type: "text",
86574
+ secret: false,
86575
+ required: true
86576
+ }),
86577
+ token: new ParameterDefinition({
86578
+ slug: "token",
86579
+ name: "API Token",
86580
+ description: "The API token used to authenticate against your InfluxDB instance. Generate one from the InfluxDB UI (Load Data \u2192 API Tokens).",
86581
+ envVarBaseKey: "INFLUXDB_TOKEN",
86582
+ type: "text",
86583
+ secret: true,
86584
+ required: true
86585
+ }),
86586
+ database: new ParameterDefinition({
86587
+ slug: "database",
86588
+ name: "Database",
86589
+ description: "The default database to query. For InfluxDB 3 this is the database name; for InfluxDB 2 use the bucket name.",
86590
+ envVarBaseKey: "INFLUXDB_DATABASE",
86591
+ type: "text",
86592
+ secret: false,
86593
+ required: true
86594
+ }),
86595
+ org: new ParameterDefinition({
86596
+ slug: "org",
86597
+ name: "Organization",
86598
+ description: "The InfluxDB organization name. Required for InfluxDB 2.x Flux queries and writes; optional for InfluxDB 3.",
86599
+ envVarBaseKey: "INFLUXDB_ORG",
86600
+ type: "text",
86601
+ secret: false,
86602
+ required: false
86603
+ })
86604
+ };
86605
+
86606
+ // ../connectors/src/connectors/influxdb/tools/request.ts
86607
+ import { z as z78 } from "zod";
86608
+ var REQUEST_TIMEOUT_MS60 = 6e4;
86609
+ var inputSchema76 = z78.object({
86610
+ toolUseIntent: z78.string().optional().describe(
86611
+ "Brief description of what you intend to accomplish with this tool call"
86612
+ ),
86613
+ connectionId: z78.string().describe("ID of the InfluxDB connection to use"),
86614
+ method: z78.enum(["GET", "POST", "DELETE"]).describe(
86615
+ "HTTP method. POST for SQL/InfluxQL/Flux queries and writes, GET for metadata endpoints, DELETE for delete endpoints."
86616
+ ),
86617
+ path: z78.string().describe(
86618
+ "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."
86619
+ ),
86620
+ body: z78.union([z78.record(z78.string(), z78.unknown()), z78.string()]).optional().describe(
86621
+ "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."
86622
+ ),
86623
+ contentType: z78.string().optional().describe(
86624
+ "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'."
86625
+ )
86626
+ });
86627
+ var outputSchema76 = z78.discriminatedUnion("success", [
86628
+ z78.object({
86629
+ success: z78.literal(true),
86630
+ status: z78.number(),
86631
+ data: z78.unknown()
86632
+ }),
86633
+ z78.object({
86634
+ success: z78.literal(false),
86635
+ error: z78.string()
86636
+ })
86637
+ ]);
86638
+ var requestTool48 = new ConnectorTool({
86639
+ name: "request",
86640
+ description: `Send authenticated requests to the InfluxDB HTTP API.
86641
+ Authentication is handled automatically using the API token (\`Authorization: Token {token}\`). The instance URL is resolved from the connection.
86642
+ Use this tool for all InfluxDB interactions: running SQL / InfluxQL / Flux queries, writing line protocol, and managing buckets / databases.
86643
+ 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.`,
86644
+ inputSchema: inputSchema76,
86645
+ outputSchema: outputSchema76,
86646
+ async execute({ connectionId, method, path: path5, body, contentType }, connections) {
86647
+ const connection2 = connections.find((c6) => c6.id === connectionId);
86648
+ if (!connection2) {
86649
+ return {
86650
+ success: false,
86651
+ error: `Connection ${connectionId} not found`
86652
+ };
86653
+ }
86654
+ console.log(
86655
+ `[connector-request] influxdb/${connection2.name}: ${method} ${path5}`
86656
+ );
86657
+ try {
86658
+ const url = parameters63.url.getValue(connection2).replace(/\/$/, "");
86659
+ const token = parameters63.token.getValue(connection2);
86660
+ const fullUrl = `${url}${path5.startsWith("/") ? "" : "/"}${path5}`;
86661
+ const controller = new AbortController();
86662
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS60);
86663
+ const resolvedContentType = contentType ?? (typeof body === "string" ? "text/plain; charset=utf-8" : "application/json");
86664
+ const serializedBody = body === void 0 ? void 0 : typeof body === "string" ? body : JSON.stringify(body);
86665
+ try {
86666
+ const response = await fetch(fullUrl, {
86667
+ method,
86668
+ headers: {
86669
+ Authorization: `Token ${token}`,
86670
+ "Content-Type": resolvedContentType,
86671
+ Accept: "application/json"
86672
+ },
86673
+ body: serializedBody,
86674
+ signal: controller.signal
86675
+ });
86676
+ const text = await response.text();
86677
+ let data;
86678
+ const resContentType = response.headers.get("content-type") ?? "";
86679
+ if (resContentType.includes("application/json")) {
86680
+ try {
86681
+ data = text ? JSON.parse(text) : null;
86682
+ } catch {
86683
+ data = { raw: text };
86684
+ }
86685
+ } else {
86686
+ data = text;
86687
+ }
86688
+ if (!response.ok) {
86689
+ let errorMessage = `HTTP ${response.status} ${response.statusText}`;
86690
+ if (data && typeof data === "object" && !Array.isArray(data) && typeof data.message === "string") {
86691
+ errorMessage = data.message;
86692
+ } else if (typeof data === "string" && data) {
86693
+ errorMessage = data;
86694
+ }
86695
+ return { success: false, error: errorMessage };
86696
+ }
86697
+ return { success: true, status: response.status, data };
86698
+ } finally {
86699
+ clearTimeout(timeout);
86700
+ }
86701
+ } catch (err) {
86702
+ const msg = err instanceof Error ? err.message : String(err);
86703
+ return { success: false, error: msg };
86704
+ }
86705
+ }
86706
+ });
86707
+
86708
+ // ../connectors/src/connectors/influxdb/index.ts
86709
+ var tools63 = { request: requestTool48 };
86710
+ var influxdbConnector = new ConnectorPlugin({
86711
+ slug: "influxdb",
86712
+ authType: AUTH_TYPES.API_KEY,
86713
+ name: "InfluxDB",
86714
+ description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
86715
+ iconUrl: "https://upload.wikimedia.org/wikipedia/commons/b/b2/Influxdb_logo.svg",
86716
+ parameters: parameters63,
86717
+ releaseFlag: { dev1: true, dev2: false, prod: false },
86718
+ onboarding: influxdbOnboarding,
86719
+ systemPrompt: {
86720
+ en: `### Tools
86721
+
86722
+ - \`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\`.
86723
+
86724
+ ### Business Logic
86725
+
86726
+ The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
86727
+
86728
+ SDK methods (client created via \`connection(connectionId)\`):
86729
+ - \`client.request(path, init?)\` \u2014 low-level authenticated fetch against the InfluxDB base URL
86730
+ - \`client.querySql<T>(sql, options?)\` \u2014 InfluxDB 3 SQL query; returns an array of row objects, defaults \`db\` to the configured database
86731
+ - \`client.queryInfluxql<T>(influxql, options?)\` \u2014 InfluxDB 3 InfluxQL query; same shape as \`querySql\`
86732
+ - \`client.queryFlux(flux, options?)\` \u2014 InfluxDB 2 Flux query; returns raw annotated CSV (parse as needed)
86733
+ - \`client.writeLineProtocol(lineProtocol, options?)\` \u2014 append-only write; uses v3 or v2 endpoint depending on whether \`org\` is configured
86734
+ - \`client.database\` / \`client.org\` \u2014 connection-level defaults
86735
+
86736
+ \`\`\`ts
86737
+ import type { Context } from "hono";
86738
+ import { connection } from "@squadbase/vite-server/connectors/influxdb";
86739
+
86740
+ const influx = connection("<connectionId>");
86741
+
86742
+ export default async function handler(c: Context) {
86743
+ const { measurement = "cpu", limit = 60 } = await c.req.json<{
86744
+ measurement?: string;
86745
+ limit?: number;
86746
+ }>();
86747
+
86748
+ const rows = await influx.querySql<{
86749
+ time: string;
86750
+ usage_user: number;
86751
+ host: string;
86752
+ }>(
86753
+ \`SELECT time, usage_user, host FROM \${measurement} ORDER BY time DESC LIMIT \${limit}\`,
86754
+ );
86755
+
86756
+ return c.json({ series: rows });
86757
+ }
86758
+ \`\`\`
86759
+
86760
+ ### InfluxDB HTTP API Reference
86761
+
86762
+ - Base URL: the \`url\` parameter (e.g., \`https://us-east-1-1.aws.cloud2.influxdata.com\`)
86763
+ - Authentication: \`Authorization: Token {token}\` (handled automatically)
86764
+ - Response content types: \`application/json\` for SQL/InfluxQL, annotated CSV for Flux
86765
+
86766
+ #### InfluxDB 3 Endpoints
86767
+ - POST \`/api/v3/query_sql\` \u2014 Body: \`{ "db": "<database>", "q": "<sql>" }\` \u2192 JSON rows
86768
+ - POST \`/api/v3/query_influxql\` \u2014 Body: \`{ "db": "<database>", "q": "<influxql>" }\` \u2192 JSON rows
86769
+ - POST \`/api/v3/write_lp?db=<database>&precision=ns\` \u2014 Body: raw line protocol
86770
+ - GET \`/api/v3/configure/database\` \u2014 List databases
86771
+
86772
+ #### InfluxDB 2 Endpoints
86773
+ - POST \`/api/v2/query?org=<org>\` \u2014 Body: Flux script (Content-Type: \`application/vnd.flux\`) \u2192 annotated CSV
86774
+ - POST \`/api/v2/write?org=<org>&bucket=<bucket>&precision=ns\` \u2014 Body: raw line protocol
86775
+ - GET \`/api/v2/buckets?org=<org>\` \u2014 List buckets
86776
+ - GET \`/api/v2/orgs\` \u2014 List organizations
86777
+
86778
+ #### SQL Reference (InfluxDB 3)
86779
+ - \`SELECT field_list FROM measurement WHERE time >= now() - INTERVAL '1 hour' AND tag = 'x' ORDER BY time DESC LIMIT 100\`
86780
+ - Time filtering uses standard SQL \`time\` column comparisons (\`time >= now() - INTERVAL '...' \`)
86781
+ - Aggregates: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`; bucket time with \`date_bin('5 minutes', time)\`
86782
+ - List measurements: \`SHOW TABLES\`; list columns: \`SHOW COLUMNS FROM <measurement>\``,
86783
+ ja: `### \u30C4\u30FC\u30EB
86784
+
86785
+ - \`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
86786
+
86787
+ ### Business Logic
86788
+
86789
+ \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
86790
+
86791
+ SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
86792
+ - \`client.request(path, init?)\` \u2014 InfluxDB \u30D9\u30FC\u30B9 URL \u306B\u5BFE\u3059\u308B\u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304D fetch
86793
+ - \`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
86794
+ - \`client.queryInfluxql<T>(influxql, options?)\` \u2014 InfluxDB 3 \u306E InfluxQL \u30AF\u30A8\u30EA\uFF08\`querySql\` \u3068\u540C\u3058\u5F62\u5F0F\uFF09
86795
+ - \`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
86796
+ - \`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
86797
+ - \`client.database\` / \`client.org\` \u2014 \u63A5\u7D9A\u5358\u4F4D\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024
86798
+
86799
+ \`\`\`ts
86800
+ import type { Context } from "hono";
86801
+ import { connection } from "@squadbase/vite-server/connectors/influxdb";
86802
+
86803
+ const influx = connection("<connectionId>");
86804
+
86805
+ export default async function handler(c: Context) {
86806
+ const { measurement = "cpu", limit = 60 } = await c.req.json<{
86807
+ measurement?: string;
86808
+ limit?: number;
86809
+ }>();
86810
+
86811
+ const rows = await influx.querySql<{
86812
+ time: string;
86813
+ usage_user: number;
86814
+ host: string;
86815
+ }>(
86816
+ \`SELECT time, usage_user, host FROM \${measurement} ORDER BY time DESC LIMIT \${limit}\`,
86817
+ );
86818
+
86819
+ return c.json({ series: rows });
86820
+ }
86821
+ \`\`\`
86822
+
86823
+ ### InfluxDB HTTP API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
86824
+
86825
+ - \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
86826
+ - \u8A8D\u8A3C: \`Authorization: Token {token}\`\uFF08\u81EA\u52D5\u8A2D\u5B9A\uFF09
86827
+ - \u30EC\u30B9\u30DD\u30F3\u30B9\u5F62\u5F0F: SQL/InfluxQL \u306F JSON\u3001Flux \u306F\u6CE8\u91C8\u4ED8\u304D CSV
86828
+
86829
+ #### InfluxDB 3 \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
86830
+ - POST \`/api/v3/query_sql\` \u2014 Body: \`{ "db": "<database>", "q": "<sql>" }\` \u2192 JSON \u884C
86831
+ - POST \`/api/v3/query_influxql\` \u2014 Body: \`{ "db": "<database>", "q": "<influxql>" }\` \u2192 JSON \u884C
86832
+ - POST \`/api/v3/write_lp?db=<database>&precision=ns\` \u2014 Body: line protocol \u751F\u6587\u5B57\u5217
86833
+ - GET \`/api/v3/configure/database\` \u2014 database \u4E00\u89A7
86834
+
86835
+ #### InfluxDB 2 \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
86836
+ - 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
86837
+ - POST \`/api/v2/write?org=<org>&bucket=<bucket>&precision=ns\` \u2014 Body: line protocol \u751F\u6587\u5B57\u5217
86838
+ - GET \`/api/v2/buckets?org=<org>\` \u2014 bucket \u4E00\u89A7
86839
+ - GET \`/api/v2/orgs\` \u2014 organization \u4E00\u89A7
86840
+
86841
+ #### SQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 (InfluxDB 3)
86842
+ - \`SELECT field_list FROM measurement WHERE time >= now() - INTERVAL '1 hour' AND tag = 'x' ORDER BY time DESC LIMIT 100\`
86843
+ - \u6642\u523B\u30D5\u30A3\u30EB\u30BF\u306F\u6A19\u6E96 SQL \u306E \`time\` \u5217\u6BD4\u8F03\uFF08\`time >= now() - INTERVAL '...'\`\uFF09
86844
+ - \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
86845
+ - measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
86846
+ },
86847
+ tools: tools63
86848
+ });
86849
+
86291
86850
  // ../connectors/src/connectors/registry.ts
86292
86851
  var plugins = {
86293
86852
  snowflake: snowflakeConnector,
@@ -86350,7 +86909,9 @@ var plugins = {
86350
86909
  grafana: grafanaConnector,
86351
86910
  backlog: backlogConnector,
86352
86911
  gamma: gammaConnector,
86353
- sentry: sentryConnector
86912
+ sentry: sentryConnector,
86913
+ salesforce: salesforceConnector,
86914
+ influxdb: influxdbConnector
86354
86915
  };
86355
86916
  var connectors = {
86356
86917
  ...plugins,
@@ -86823,62 +87384,62 @@ function createDbtClient(entry, slug) {
86823
87384
  var { getQuery, loadConnections, reloadEnvFile, watchConnectionsFile } = createConnectorRegistry();
86824
87385
 
86825
87386
  // src/types/server-logic.ts
86826
- import { z as z77 } from "zod";
86827
- var parameterMetaSchema = z77.object({
86828
- name: z77.string(),
86829
- type: z77.enum(["string", "number", "boolean"]),
86830
- description: z77.string(),
86831
- required: z77.boolean().optional(),
86832
- default: z77.union([z77.string(), z77.number(), z77.boolean()]).optional()
86833
- });
86834
- var serverLogicCacheConfigSchema = z77.object({
86835
- ttl: z77.number(),
86836
- staleWhileRevalidate: z77.boolean().optional()
86837
- });
86838
- var serverLogicSchemaObjectSchema = z77.lazy(
86839
- () => z77.object({
86840
- type: z77.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
86841
- format: z77.string().optional(),
86842
- description: z77.string().optional(),
86843
- nullable: z77.boolean().optional(),
86844
- enum: z77.array(z77.union([z77.string(), z77.number(), z77.boolean(), z77.null()])).optional(),
87387
+ import { z as z79 } from "zod";
87388
+ var parameterMetaSchema = z79.object({
87389
+ name: z79.string(),
87390
+ type: z79.enum(["string", "number", "boolean"]),
87391
+ description: z79.string(),
87392
+ required: z79.boolean().optional(),
87393
+ default: z79.union([z79.string(), z79.number(), z79.boolean()]).optional()
87394
+ });
87395
+ var serverLogicCacheConfigSchema = z79.object({
87396
+ ttl: z79.number(),
87397
+ staleWhileRevalidate: z79.boolean().optional()
87398
+ });
87399
+ var serverLogicSchemaObjectSchema = z79.lazy(
87400
+ () => z79.object({
87401
+ type: z79.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
87402
+ format: z79.string().optional(),
87403
+ description: z79.string().optional(),
87404
+ nullable: z79.boolean().optional(),
87405
+ enum: z79.array(z79.union([z79.string(), z79.number(), z79.boolean(), z79.null()])).optional(),
86845
87406
  items: serverLogicSchemaObjectSchema.optional(),
86846
- properties: z77.record(z77.string(), serverLogicSchemaObjectSchema).optional(),
86847
- required: z77.array(z77.string()).optional(),
86848
- additionalProperties: z77.union([z77.boolean(), serverLogicSchemaObjectSchema]).optional(),
86849
- minimum: z77.number().optional(),
86850
- maximum: z77.number().optional(),
86851
- minLength: z77.number().optional(),
86852
- maxLength: z77.number().optional(),
86853
- pattern: z77.string().optional()
87407
+ properties: z79.record(z79.string(), serverLogicSchemaObjectSchema).optional(),
87408
+ required: z79.array(z79.string()).optional(),
87409
+ additionalProperties: z79.union([z79.boolean(), serverLogicSchemaObjectSchema]).optional(),
87410
+ minimum: z79.number().optional(),
87411
+ maximum: z79.number().optional(),
87412
+ minLength: z79.number().optional(),
87413
+ maxLength: z79.number().optional(),
87414
+ pattern: z79.string().optional()
86854
87415
  })
86855
87416
  );
86856
- var serverLogicMediaTypeSchema = z77.object({
87417
+ var serverLogicMediaTypeSchema = z79.object({
86857
87418
  schema: serverLogicSchemaObjectSchema.optional(),
86858
- example: z77.unknown().optional()
87419
+ example: z79.unknown().optional()
86859
87420
  });
86860
- var serverLogicResponseSchema = z77.object({
86861
- description: z77.string().optional(),
86862
- content: z77.record(z77.string(), serverLogicMediaTypeSchema).optional()
87421
+ var serverLogicResponseSchema = z79.object({
87422
+ description: z79.string().optional(),
87423
+ content: z79.record(z79.string(), serverLogicMediaTypeSchema).optional()
86863
87424
  });
86864
87425
  var jsonBaseFields = {
86865
- description: z77.string(),
86866
- parameters: z77.array(parameterMetaSchema).optional(),
87426
+ description: z79.string(),
87427
+ parameters: z79.array(parameterMetaSchema).optional(),
86867
87428
  response: serverLogicResponseSchema.optional(),
86868
87429
  cache: serverLogicCacheConfigSchema.optional()
86869
87430
  };
86870
- var jsonSqlServerLogicSchema = z77.object({
87431
+ var jsonSqlServerLogicSchema = z79.object({
86871
87432
  ...jsonBaseFields,
86872
- type: z77.literal("sql").optional(),
86873
- query: z77.string(),
86874
- connectionId: z77.string()
87433
+ type: z79.literal("sql").optional(),
87434
+ query: z79.string(),
87435
+ connectionId: z79.string()
86875
87436
  });
86876
- var jsonTypeScriptServerLogicSchema = z77.object({
87437
+ var jsonTypeScriptServerLogicSchema = z79.object({
86877
87438
  ...jsonBaseFields,
86878
- type: z77.literal("typescript"),
86879
- handlerPath: z77.string()
87439
+ type: z79.literal("typescript"),
87440
+ handlerPath: z79.string()
86880
87441
  });
86881
- var anyJsonServerLogicSchema = z77.union([
87442
+ var anyJsonServerLogicSchema = z79.union([
86882
87443
  jsonTypeScriptServerLogicSchema,
86883
87444
  jsonSqlServerLogicSchema
86884
87445
  ]);