@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.
- package/dist/cli/index.js +819 -258
- package/dist/connectors/airtable-oauth.js +0 -8
- package/dist/connectors/amplitude.js +1 -1
- package/dist/connectors/asana.js +1 -1
- package/dist/connectors/attio.js +1 -1
- package/dist/connectors/backlog-api-key.js +1 -1
- package/dist/connectors/customerio.js +1 -1
- package/dist/connectors/gamma.js +1 -1
- package/dist/connectors/gmail-oauth.js +0 -8
- package/dist/connectors/gmail.js +1 -9
- package/dist/connectors/google-ads.js +0 -8
- package/dist/connectors/google-analytics-oauth.js +0 -8
- package/dist/connectors/google-calendar-oauth.js +0 -8
- package/dist/connectors/google-calendar.js +0 -10
- package/dist/connectors/google-docs.js +3 -1
- package/dist/connectors/hubspot-oauth.js +0 -6
- package/dist/connectors/hubspot.js +1 -1
- package/dist/connectors/influxdb.d.ts +5 -0
- package/dist/connectors/influxdb.js +767 -0
- package/dist/connectors/intercom-oauth.js +0 -6
- package/dist/connectors/intercom.js +1 -1
- package/dist/connectors/jira-api-key.js +1 -1
- package/dist/connectors/kintone-api-token.js +1 -1
- package/dist/connectors/linear.d.ts +5 -0
- package/dist/connectors/linear.js +688 -0
- package/dist/connectors/linkedin-ads.js +0 -8
- package/dist/connectors/mailchimp.js +1 -1
- package/dist/connectors/meta-ads-oauth.d.ts +5 -0
- package/dist/connectors/meta-ads-oauth.js +795 -0
- package/dist/connectors/meta-ads.d.ts +5 -0
- package/dist/connectors/meta-ads.js +780 -0
- package/dist/connectors/mixpanel.js +1 -1
- package/dist/connectors/notion-oauth.js +1 -7
- package/dist/connectors/notion.js +1 -1
- package/dist/connectors/salesforce.d.ts +5 -0
- package/dist/connectors/salesforce.js +862 -0
- package/dist/connectors/sentry.js +1 -1
- package/dist/connectors/shopify-oauth.js +0 -6
- package/dist/connectors/stripe-api-key.js +1 -5
- package/dist/connectors/stripe-oauth.js +0 -6
- package/dist/connectors/tiktok-ads.d.ts +5 -0
- package/dist/connectors/tiktok-ads.js +840 -0
- package/dist/connectors/zendesk-oauth.js +0 -6
- package/dist/connectors/zendesk.js +1 -1
- package/dist/index.js +819 -258
- package/dist/main.js +819 -258
- package/dist/vite-plugin.js +819 -258
- package/package.json +25 -1
package/dist/main.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
|
|
18866
|
+
const z80 = struct[4].length;
|
|
18867
18867
|
let it = struct[anno.it];
|
|
18868
|
-
if (it &&
|
|
18868
|
+
if (it && z80 === it.length) {
|
|
18869
18869
|
yield* it;
|
|
18870
18870
|
return;
|
|
18871
18871
|
}
|
|
18872
|
-
it = Array(
|
|
18873
|
-
for (let i6 = 0; 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
|
|
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 <
|
|
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
|
|
19576
|
-
if (
|
|
19575
|
+
const z81 = v7.length;
|
|
19576
|
+
if (z81 < 2) {
|
|
19577
19577
|
return v7;
|
|
19578
19578
|
}
|
|
19579
|
-
if (v7[0] === `"` && v7[
|
|
19580
|
-
v7 = v7.slice(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:
|
|
20979
|
-
if (
|
|
20978
|
+
const { parameters: parameters64 } = this;
|
|
20979
|
+
if (parameters64.length === 0) {
|
|
20980
20980
|
return false;
|
|
20981
20981
|
}
|
|
20982
|
-
for (const param of
|
|
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:
|
|
21699
|
+
const { parameters: parameters64, rules } = ruleSetObject;
|
|
21700
21700
|
options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
|
|
21701
|
-
const paramsWithDefault = Object.entries(
|
|
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(
|
|
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,
|
|
27318
|
-
const members =
|
|
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 (!
|
|
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
|
|
28176
|
+
const inputSchema77 = NormalizedSchema.of(operationSchema.input);
|
|
28177
28177
|
if (!request2.headers["content-type"]) {
|
|
28178
|
-
const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(),
|
|
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
|
|
28191
|
-
for (const [name, member2] of
|
|
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(
|
|
32055
|
+
function fromCognitoIdentity(parameters64) {
|
|
32056
32056
|
return async (awsIdentityProperties) => {
|
|
32057
|
-
|
|
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) =>
|
|
32060
|
-
const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(
|
|
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:
|
|
32066
|
-
IdentityId:
|
|
32067
|
-
Logins:
|
|
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:
|
|
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,
|
|
44631
|
+
var s6, z80, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
|
|
44632
44632
|
for (; i6 < j6; ) {
|
|
44633
44633
|
s6 = a6[i6++] + "";
|
|
44634
|
-
|
|
44635
|
-
for (;
|
|
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,
|
|
44668
|
+
function toFixedPoint(str, e6, z80) {
|
|
44669
44669
|
var len, zs;
|
|
44670
44670
|
if (e6 < 0) {
|
|
44671
|
-
for (zs =
|
|
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 =
|
|
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. \`
|
|
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.
|
|
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. \`
|
|
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.
|
|
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. \`
|
|
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.
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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: path6, 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} ${path6}`
|
|
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}${path6.startsWith("/") ? "" : "/"}${path6}`;
|
|
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: path6, 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} ${path6}`
|
|
86656
|
+
);
|
|
86657
|
+
try {
|
|
86658
|
+
const url = parameters63.url.getValue(connection2).replace(/\/$/, "");
|
|
86659
|
+
const token = parameters63.token.getValue(connection2);
|
|
86660
|
+
const fullUrl = `${url}${path6.startsWith("/") ? "" : "/"}${path6}`;
|
|
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,
|
|
@@ -86561,62 +87122,62 @@ function resolveParams2(entry, connectionId, plugin) {
|
|
|
86561
87122
|
var { getQuery, loadConnections, reloadEnvFile, watchConnectionsFile } = createConnectorRegistry();
|
|
86562
87123
|
|
|
86563
87124
|
// src/types/server-logic.ts
|
|
86564
|
-
import { z as
|
|
86565
|
-
var parameterMetaSchema =
|
|
86566
|
-
name:
|
|
86567
|
-
type:
|
|
86568
|
-
description:
|
|
86569
|
-
required:
|
|
86570
|
-
default:
|
|
86571
|
-
});
|
|
86572
|
-
var serverLogicCacheConfigSchema =
|
|
86573
|
-
ttl:
|
|
86574
|
-
staleWhileRevalidate:
|
|
86575
|
-
});
|
|
86576
|
-
var serverLogicSchemaObjectSchema =
|
|
86577
|
-
() =>
|
|
86578
|
-
type:
|
|
86579
|
-
format:
|
|
86580
|
-
description:
|
|
86581
|
-
nullable:
|
|
86582
|
-
enum:
|
|
87125
|
+
import { z as z79 } from "zod";
|
|
87126
|
+
var parameterMetaSchema = z79.object({
|
|
87127
|
+
name: z79.string(),
|
|
87128
|
+
type: z79.enum(["string", "number", "boolean"]),
|
|
87129
|
+
description: z79.string(),
|
|
87130
|
+
required: z79.boolean().optional(),
|
|
87131
|
+
default: z79.union([z79.string(), z79.number(), z79.boolean()]).optional()
|
|
87132
|
+
});
|
|
87133
|
+
var serverLogicCacheConfigSchema = z79.object({
|
|
87134
|
+
ttl: z79.number(),
|
|
87135
|
+
staleWhileRevalidate: z79.boolean().optional()
|
|
87136
|
+
});
|
|
87137
|
+
var serverLogicSchemaObjectSchema = z79.lazy(
|
|
87138
|
+
() => z79.object({
|
|
87139
|
+
type: z79.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
|
|
87140
|
+
format: z79.string().optional(),
|
|
87141
|
+
description: z79.string().optional(),
|
|
87142
|
+
nullable: z79.boolean().optional(),
|
|
87143
|
+
enum: z79.array(z79.union([z79.string(), z79.number(), z79.boolean(), z79.null()])).optional(),
|
|
86583
87144
|
items: serverLogicSchemaObjectSchema.optional(),
|
|
86584
|
-
properties:
|
|
86585
|
-
required:
|
|
86586
|
-
additionalProperties:
|
|
86587
|
-
minimum:
|
|
86588
|
-
maximum:
|
|
86589
|
-
minLength:
|
|
86590
|
-
maxLength:
|
|
86591
|
-
pattern:
|
|
87145
|
+
properties: z79.record(z79.string(), serverLogicSchemaObjectSchema).optional(),
|
|
87146
|
+
required: z79.array(z79.string()).optional(),
|
|
87147
|
+
additionalProperties: z79.union([z79.boolean(), serverLogicSchemaObjectSchema]).optional(),
|
|
87148
|
+
minimum: z79.number().optional(),
|
|
87149
|
+
maximum: z79.number().optional(),
|
|
87150
|
+
minLength: z79.number().optional(),
|
|
87151
|
+
maxLength: z79.number().optional(),
|
|
87152
|
+
pattern: z79.string().optional()
|
|
86592
87153
|
})
|
|
86593
87154
|
);
|
|
86594
|
-
var serverLogicMediaTypeSchema =
|
|
87155
|
+
var serverLogicMediaTypeSchema = z79.object({
|
|
86595
87156
|
schema: serverLogicSchemaObjectSchema.optional(),
|
|
86596
|
-
example:
|
|
87157
|
+
example: z79.unknown().optional()
|
|
86597
87158
|
});
|
|
86598
|
-
var serverLogicResponseSchema =
|
|
86599
|
-
description:
|
|
86600
|
-
content:
|
|
87159
|
+
var serverLogicResponseSchema = z79.object({
|
|
87160
|
+
description: z79.string().optional(),
|
|
87161
|
+
content: z79.record(z79.string(), serverLogicMediaTypeSchema).optional()
|
|
86601
87162
|
});
|
|
86602
87163
|
var jsonBaseFields = {
|
|
86603
|
-
description:
|
|
86604
|
-
parameters:
|
|
87164
|
+
description: z79.string(),
|
|
87165
|
+
parameters: z79.array(parameterMetaSchema).optional(),
|
|
86605
87166
|
response: serverLogicResponseSchema.optional(),
|
|
86606
87167
|
cache: serverLogicCacheConfigSchema.optional()
|
|
86607
87168
|
};
|
|
86608
|
-
var jsonSqlServerLogicSchema =
|
|
87169
|
+
var jsonSqlServerLogicSchema = z79.object({
|
|
86609
87170
|
...jsonBaseFields,
|
|
86610
|
-
type:
|
|
86611
|
-
query:
|
|
86612
|
-
connectionId:
|
|
87171
|
+
type: z79.literal("sql").optional(),
|
|
87172
|
+
query: z79.string(),
|
|
87173
|
+
connectionId: z79.string()
|
|
86613
87174
|
});
|
|
86614
|
-
var jsonTypeScriptServerLogicSchema =
|
|
87175
|
+
var jsonTypeScriptServerLogicSchema = z79.object({
|
|
86615
87176
|
...jsonBaseFields,
|
|
86616
|
-
type:
|
|
86617
|
-
handlerPath:
|
|
87177
|
+
type: z79.literal("typescript"),
|
|
87178
|
+
handlerPath: z79.string()
|
|
86618
87179
|
});
|
|
86619
|
-
var anyJsonServerLogicSchema =
|
|
87180
|
+
var anyJsonServerLogicSchema = z79.union([
|
|
86620
87181
|
jsonTypeScriptServerLogicSchema,
|
|
86621
87182
|
jsonSqlServerLogicSchema
|
|
86622
87183
|
]);
|