@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/cli/index.js
CHANGED
|
@@ -18864,14 +18864,14 @@ var init_NormalizedSchema = __esm({
|
|
|
18864
18864
|
throw new Error("@smithy/core/schema - cannot iterate non-struct schema.");
|
|
18865
18865
|
}
|
|
18866
18866
|
const struct = this.getSchema();
|
|
18867
|
-
const
|
|
18867
|
+
const z80 = struct[4].length;
|
|
18868
18868
|
let it = struct[anno.it];
|
|
18869
|
-
if (it &&
|
|
18869
|
+
if (it && z80 === it.length) {
|
|
18870
18870
|
yield* it;
|
|
18871
18871
|
return;
|
|
18872
18872
|
}
|
|
18873
|
-
it = Array(
|
|
18874
|
-
for (let i6 = 0; i6 <
|
|
18873
|
+
it = Array(z80);
|
|
18874
|
+
for (let i6 = 0; i6 < z80; ++i6) {
|
|
18875
18875
|
const k6 = struct[4][i6];
|
|
18876
18876
|
const v7 = member([struct[5][i6], 0], k6);
|
|
18877
18877
|
yield it[i6] = [k6, v7];
|
|
@@ -19547,12 +19547,12 @@ var init_split_header = __esm({
|
|
|
19547
19547
|
"../../node_modules/@smithy/core/dist-es/submodules/serde/split-header.js"() {
|
|
19548
19548
|
"use strict";
|
|
19549
19549
|
splitHeader = (value) => {
|
|
19550
|
-
const
|
|
19550
|
+
const z80 = value.length;
|
|
19551
19551
|
const values = [];
|
|
19552
19552
|
let withinQuotes = false;
|
|
19553
19553
|
let prevChar = void 0;
|
|
19554
19554
|
let anchor = 0;
|
|
19555
|
-
for (let i6 = 0; i6 <
|
|
19555
|
+
for (let i6 = 0; i6 < z80; ++i6) {
|
|
19556
19556
|
const char = value[i6];
|
|
19557
19557
|
switch (char) {
|
|
19558
19558
|
case `"`:
|
|
@@ -19573,12 +19573,12 @@ var init_split_header = __esm({
|
|
|
19573
19573
|
values.push(value.slice(anchor));
|
|
19574
19574
|
return values.map((v7) => {
|
|
19575
19575
|
v7 = v7.trim();
|
|
19576
|
-
const
|
|
19577
|
-
if (
|
|
19576
|
+
const z81 = v7.length;
|
|
19577
|
+
if (z81 < 2) {
|
|
19578
19578
|
return v7;
|
|
19579
19579
|
}
|
|
19580
|
-
if (v7[0] === `"` && v7[
|
|
19581
|
-
v7 = v7.slice(1,
|
|
19580
|
+
if (v7[0] === `"` && v7[z81 - 1] === `"`) {
|
|
19581
|
+
v7 = v7.slice(1, z81 - 1);
|
|
19582
19582
|
}
|
|
19583
19583
|
return v7.replace(/\\"/g, '"');
|
|
19584
19584
|
});
|
|
@@ -20976,11 +20976,11 @@ var init_EndpointCache = __esm({
|
|
|
20976
20976
|
}
|
|
20977
20977
|
hash(endpointParams) {
|
|
20978
20978
|
let buffer = "";
|
|
20979
|
-
const { parameters:
|
|
20980
|
-
if (
|
|
20979
|
+
const { parameters: parameters64 } = this;
|
|
20980
|
+
if (parameters64.length === 0) {
|
|
20981
20981
|
return false;
|
|
20982
20982
|
}
|
|
20983
|
-
for (const param of
|
|
20983
|
+
for (const param of parameters64) {
|
|
20984
20984
|
const val = String(endpointParams[param] ?? "");
|
|
20985
20985
|
if (val.includes("|;")) {
|
|
20986
20986
|
return false;
|
|
@@ -21697,15 +21697,15 @@ var init_resolveEndpoint = __esm({
|
|
|
21697
21697
|
init_utils();
|
|
21698
21698
|
resolveEndpoint = (ruleSetObject, options) => {
|
|
21699
21699
|
const { endpointParams, logger: logger2 } = options;
|
|
21700
|
-
const { parameters:
|
|
21700
|
+
const { parameters: parameters64, rules } = ruleSetObject;
|
|
21701
21701
|
options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
|
|
21702
|
-
const paramsWithDefault = Object.entries(
|
|
21702
|
+
const paramsWithDefault = Object.entries(parameters64).filter(([, v7]) => v7.default != null).map(([k6, v7]) => [k6, v7.default]);
|
|
21703
21703
|
if (paramsWithDefault.length > 0) {
|
|
21704
21704
|
for (const [paramKey, paramDefaultValue] of paramsWithDefault) {
|
|
21705
21705
|
endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;
|
|
21706
21706
|
}
|
|
21707
21707
|
}
|
|
21708
|
-
const requiredParams = Object.entries(
|
|
21708
|
+
const requiredParams = Object.entries(parameters64).filter(([, v7]) => v7.required).map(([k6]) => k6);
|
|
21709
21709
|
for (const requiredParam of requiredParams) {
|
|
21710
21710
|
if (endpointParams[requiredParam] == null) {
|
|
21711
21711
|
throw new EndpointError(`Missing required parameter: '${requiredParam}'`);
|
|
@@ -27315,8 +27315,8 @@ var init_ProtocolLib = __esm({
|
|
|
27315
27315
|
constructor(queryCompat = false) {
|
|
27316
27316
|
this.queryCompat = queryCompat;
|
|
27317
27317
|
}
|
|
27318
|
-
resolveRestContentType(defaultContentType,
|
|
27319
|
-
const members =
|
|
27318
|
+
resolveRestContentType(defaultContentType, inputSchema77) {
|
|
27319
|
+
const members = inputSchema77.getMemberSchemas();
|
|
27320
27320
|
const httpPayloadMember = Object.values(members).find((m6) => {
|
|
27321
27321
|
return !!m6.getMergedTraits().httpPayload;
|
|
27322
27322
|
});
|
|
@@ -27331,7 +27331,7 @@ var init_ProtocolLib = __esm({
|
|
|
27331
27331
|
} else {
|
|
27332
27332
|
return defaultContentType;
|
|
27333
27333
|
}
|
|
27334
|
-
} else if (!
|
|
27334
|
+
} else if (!inputSchema77.isUnitSchema()) {
|
|
27335
27335
|
const hasBody = Object.values(members).find((m6) => {
|
|
27336
27336
|
const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m6.getMergedTraits();
|
|
27337
27337
|
const noPrefixHeaders = httpPrefixHeaders === void 0;
|
|
@@ -28174,9 +28174,9 @@ var init_AwsRestJsonProtocol = __esm({
|
|
|
28174
28174
|
}
|
|
28175
28175
|
async serializeRequest(operationSchema, input, context) {
|
|
28176
28176
|
const request2 = await super.serializeRequest(operationSchema, input, context);
|
|
28177
|
-
const
|
|
28177
|
+
const inputSchema77 = NormalizedSchema.of(operationSchema.input);
|
|
28178
28178
|
if (!request2.headers["content-type"]) {
|
|
28179
|
-
const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(),
|
|
28179
|
+
const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema77);
|
|
28180
28180
|
if (contentType) {
|
|
28181
28181
|
request2.headers["content-type"] = contentType;
|
|
28182
28182
|
}
|
|
@@ -28188,8 +28188,8 @@ var init_AwsRestJsonProtocol = __esm({
|
|
|
28188
28188
|
}
|
|
28189
28189
|
async deserializeResponse(operationSchema, context, response) {
|
|
28190
28190
|
const output = await super.deserializeResponse(operationSchema, context, response);
|
|
28191
|
-
const
|
|
28192
|
-
for (const [name, member2] of
|
|
28191
|
+
const outputSchema77 = NormalizedSchema.of(operationSchema.output);
|
|
28192
|
+
for (const [name, member2] of outputSchema77.structIterator()) {
|
|
28193
28193
|
if (member2.getMemberTraits().httpPayload && !(name in output)) {
|
|
28194
28194
|
output[name] = null;
|
|
28195
28195
|
}
|
|
@@ -32053,22 +32053,22 @@ var init_loadCognitoIdentity = __esm({
|
|
|
32053
32053
|
});
|
|
32054
32054
|
|
|
32055
32055
|
// ../../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js
|
|
32056
|
-
function fromCognitoIdentity(
|
|
32056
|
+
function fromCognitoIdentity(parameters64) {
|
|
32057
32057
|
return async (awsIdentityProperties) => {
|
|
32058
|
-
|
|
32058
|
+
parameters64.logger?.debug("@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity");
|
|
32059
32059
|
const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));
|
|
32060
|
-
const fromConfigs = (property) =>
|
|
32061
|
-
const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(
|
|
32060
|
+
const fromConfigs = (property) => parameters64.clientConfig?.[property] ?? parameters64.parentClientConfig?.[property] ?? awsIdentityProperties?.callerClientConfig?.[property];
|
|
32061
|
+
const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(parameters64.logger), Expiration, SecretKey = throwOnMissingSecretKey(parameters64.logger), SessionToken } = throwOnMissingCredentials(parameters64.logger) } = await (parameters64.client ?? new CognitoIdentityClient2(Object.assign({}, parameters64.clientConfig ?? {}, {
|
|
32062
32062
|
region: fromConfigs("region"),
|
|
32063
32063
|
profile: fromConfigs("profile"),
|
|
32064
32064
|
userAgentAppId: fromConfigs("userAgentAppId")
|
|
32065
32065
|
}))).send(new GetCredentialsForIdentityCommand2({
|
|
32066
|
-
CustomRoleArn:
|
|
32067
|
-
IdentityId:
|
|
32068
|
-
Logins:
|
|
32066
|
+
CustomRoleArn: parameters64.customRoleArn,
|
|
32067
|
+
IdentityId: parameters64.identityId,
|
|
32068
|
+
Logins: parameters64.logins ? await resolveLogins(parameters64.logins) : void 0
|
|
32069
32069
|
}));
|
|
32070
32070
|
return {
|
|
32071
|
-
identityId:
|
|
32071
|
+
identityId: parameters64.identityId,
|
|
32072
32072
|
accessKeyId: AccessKeyId,
|
|
32073
32073
|
secretAccessKey: SecretKey,
|
|
32074
32074
|
sessionToken: SessionToken,
|
|
@@ -44629,11 +44629,11 @@ var require_bignumber = __commonJS({
|
|
|
44629
44629
|
return n6 > 0 || n6 === i6 ? i6 : i6 - 1;
|
|
44630
44630
|
}
|
|
44631
44631
|
function coeffToString(a6) {
|
|
44632
|
-
var s6,
|
|
44632
|
+
var s6, z80, i6 = 1, j6 = a6.length, r6 = a6[0] + "";
|
|
44633
44633
|
for (; i6 < j6; ) {
|
|
44634
44634
|
s6 = a6[i6++] + "";
|
|
44635
|
-
|
|
44636
|
-
for (;
|
|
44635
|
+
z80 = LOG_BASE - s6.length;
|
|
44636
|
+
for (; z80--; s6 = "0" + s6) ;
|
|
44637
44637
|
r6 += s6;
|
|
44638
44638
|
}
|
|
44639
44639
|
for (j6 = r6.length; r6.charCodeAt(--j6) === 48; ) ;
|
|
@@ -44666,15 +44666,15 @@ var require_bignumber = __commonJS({
|
|
|
44666
44666
|
function toExponential(str, e6) {
|
|
44667
44667
|
return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e6 < 0 ? "e" : "e+") + e6;
|
|
44668
44668
|
}
|
|
44669
|
-
function toFixedPoint(str, e6,
|
|
44669
|
+
function toFixedPoint(str, e6, z80) {
|
|
44670
44670
|
var len, zs;
|
|
44671
44671
|
if (e6 < 0) {
|
|
44672
|
-
for (zs =
|
|
44672
|
+
for (zs = z80 + "."; ++e6; zs += z80) ;
|
|
44673
44673
|
str = zs + str;
|
|
44674
44674
|
} else {
|
|
44675
44675
|
len = str.length;
|
|
44676
44676
|
if (++e6 > len) {
|
|
44677
|
-
for (zs =
|
|
44677
|
+
for (zs = z80, e6 -= len; --e6; zs += z80) ;
|
|
44678
44678
|
str += zs;
|
|
44679
44679
|
} else if (e6 < len) {
|
|
44680
44680
|
str = str.slice(0, e6) + "." + str.slice(e6);
|
|
@@ -66503,11 +66503,7 @@ var snowflakeOnboarding = new ConnectorOnboarding({
|
|
|
66503
66503
|
8. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
|
|
66504
66504
|
- **\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
|
|
66505
66505
|
- **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
|
|
66506
|
-
9. \`
|
|
66507
|
-
- \`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
|
|
66508
|
-
- \`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
|
|
66509
|
-
- \`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
|
|
66510
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
66506
|
+
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
|
|
66511
66507
|
|
|
66512
66508
|
#### \u5236\u7D04
|
|
66513
66509
|
- 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
|
|
@@ -66530,11 +66526,7 @@ var snowflakeOnboarding = new ConnectorOnboarding({
|
|
|
66530
66526
|
8. Branch based on results:
|
|
66531
66527
|
- **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
|
|
66532
66528
|
- **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
|
|
66533
|
-
9.
|
|
66534
|
-
- \`database\`: Selected database name(s) (comma-separated if multiple)
|
|
66535
|
-
- \`schema\`: Selected schema name(s) (comma-separated if multiple)
|
|
66536
|
-
- \`tables\`: Selected table names (fully qualified database.schema.table, comma-separated if multiple. Use "{database}.{schema}.*" for "all tables" schemas)
|
|
66537
|
-
- \`note\`: Brief description of the setup
|
|
66529
|
+
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.
|
|
66538
66530
|
|
|
66539
66531
|
#### Constraints
|
|
66540
66532
|
- askUserQuestion options requires at least 2 items. If there is only 1 item, do NOT call askUserQuestion \u2014 proceed to the next step directly
|
|
@@ -67668,10 +67660,7 @@ var bigqueryOnboarding = new ConnectorOnboarding({
|
|
|
67668
67660
|
7. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
|
|
67669
67661
|
- **\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
|
|
67670
67662
|
- **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
|
|
67671
|
-
8. \`
|
|
67672
|
-
- \`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
|
|
67673
|
-
- \`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
|
|
67674
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
67663
|
+
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
|
|
67675
67664
|
|
|
67676
67665
|
#### \u5236\u7D04
|
|
67677
67666
|
- **\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
|
|
@@ -67700,10 +67689,7 @@ var bigqueryOnboarding = new ConnectorOnboarding({
|
|
|
67700
67689
|
7. Branch based on results:
|
|
67701
67690
|
- **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
|
|
67702
67691
|
- **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
|
|
67703
|
-
8.
|
|
67704
|
-
- \`dataset\`: Selected dataset name(s) (comma-separated if multiple). Record public datasets in the format \`bigquery-public-data.{dataset}\`
|
|
67705
|
-
- \`tables\`: Selected table name(s) (comma-separated if multiple)
|
|
67706
|
-
- \`note\`: Brief description of the setup
|
|
67692
|
+
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.
|
|
67707
67693
|
|
|
67708
67694
|
#### Constraints
|
|
67709
67695
|
- **Do NOT read table row data**. Only the metadata queries specified in the steps above are allowed. All other queries are forbidden
|
|
@@ -68130,10 +68116,7 @@ var bigqueryOnboarding2 = new ConnectorOnboarding({
|
|
|
68130
68116
|
7. \u7D50\u679C\u306B\u5FDC\u3058\u3066\u5206\u5C90:
|
|
68131
68117
|
- **\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
|
|
68132
68118
|
- **\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3060\u3051**: askUserQuestion \u306F\u4F7F\u308F\u305A\u81EA\u52D5\u63A1\u7528
|
|
68133
|
-
8. \`
|
|
68134
|
-
- \`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
|
|
68135
|
-
- \`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
|
|
68136
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
68119
|
+
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
|
|
68137
68120
|
|
|
68138
68121
|
#### \u5236\u7D04
|
|
68139
68122
|
- **\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
|
|
@@ -68162,10 +68145,7 @@ var bigqueryOnboarding2 = new ConnectorOnboarding({
|
|
|
68162
68145
|
7. Branch based on results:
|
|
68163
68146
|
- **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
|
|
68164
68147
|
- **Exactly 1 table**: Do NOT call askUserQuestion. Auto-select it
|
|
68165
|
-
8.
|
|
68166
|
-
- \`dataset\`: Selected dataset name(s) (comma-separated if multiple). Record public datasets in the format \`bigquery-public-data.{dataset}\`
|
|
68167
|
-
- \`tables\`: Selected table name(s) (comma-separated if multiple)
|
|
68168
|
-
- \`note\`: Brief description of the setup
|
|
68148
|
+
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.
|
|
68169
68149
|
|
|
68170
68150
|
#### Constraints
|
|
68171
68151
|
- **Do NOT read table row data**. Only the metadata queries specified in the steps above are allowed. All other queries are forbidden
|
|
@@ -69785,10 +69765,6 @@ var googleAdsOnboarding = new ConnectorOnboarding({
|
|
|
69785
69765
|
- \`parameterSlug\`: \`"customer-id"\`
|
|
69786
69766
|
- \`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
|
|
69787
69767
|
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
|
|
69788
|
-
6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
69789
|
-
- \`customer\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30B9\u30BF\u30DE\u30FC\u306E\u8868\u793A\u540D
|
|
69790
|
-
- \`customerId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30B9\u30BF\u30DE\u30FCID
|
|
69791
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
69792
69768
|
|
|
69793
69769
|
#### \u5236\u7D04
|
|
69794
69770
|
- **\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
|
|
@@ -69804,10 +69780,6 @@ var googleAdsOnboarding = new ConnectorOnboarding({
|
|
|
69804
69780
|
- \`parameterSlug\`: \`"customer-id"\`
|
|
69805
69781
|
- \`options\`: The customer list. Each option's \`label\` should be \`Account Name (id: customerId)\`, \`value\` should be the customer ID
|
|
69806
69782
|
5. The \`label\` of the user's selected customer will arrive as a message. Proceed to the next step
|
|
69807
|
-
6. Call \`updateConnectionContext\`:
|
|
69808
|
-
- \`customer\`: The selected customer's display name
|
|
69809
|
-
- \`customerId\`: The selected customer ID
|
|
69810
|
-
- \`note\`: Brief description of the setup
|
|
69811
69783
|
|
|
69812
69784
|
#### Constraints
|
|
69813
69785
|
- **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
|
|
@@ -70650,10 +70622,6 @@ var googleAnalyticsOauthOnboarding = new ConnectorOnboarding({
|
|
|
70650
70622
|
- \`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
|
|
70651
70623
|
- \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
|
|
70652
70624
|
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
|
|
70653
|
-
6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
70654
|
-
- \`property\`: \u9078\u629E\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u8868\u793A\u540D
|
|
70655
|
-
- \`propertyId\`: \u9078\u629E\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3ID
|
|
70656
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
70657
70625
|
|
|
70658
70626
|
#### \u5236\u7D04
|
|
70659
70627
|
- **\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
|
|
@@ -70672,10 +70640,6 @@ var googleAnalyticsOauthOnboarding = new ConnectorOnboarding({
|
|
|
70672
70640
|
- \`options\`: The property list. Each option's \`label\` should be \`Display Name (id: propertyId)\`, \`value\` should be the property ID
|
|
70673
70641
|
- If **0 properties** are returned, abort setup and inform the user that no accessible properties are available
|
|
70674
70642
|
5. The \`label\` of the user's selected property will arrive as a message. Proceed to the next step
|
|
70675
|
-
6. Call \`updateConnectionContext\`:
|
|
70676
|
-
- \`property\`: The selected property's display name
|
|
70677
|
-
- \`propertyId\`: The selected property ID
|
|
70678
|
-
- \`note\`: Brief description of the setup
|
|
70679
70643
|
|
|
70680
70644
|
#### Constraints
|
|
70681
70645
|
- **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
|
|
@@ -71247,11 +71211,6 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
|
|
|
71247
71211
|
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:
|
|
71248
71212
|
- \`parameterSlug\`: \`"impersonate-email"\`
|
|
71249
71213
|
- \`options\`: \`[{ value: <ownerEmail>, label: <ownerEmail> }]\`
|
|
71250
|
-
6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u5BFE\u8C61\u60C5\u5831\u3092\u8A18\u9332\u3059\u308B:
|
|
71251
|
-
- \`user\`: \u6700\u7D42\u7684\u306B\u8A2D\u5B9A\u3057\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
|
|
71252
|
-
- \`calendar\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u540D
|
|
71253
|
-
- \`calendarId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
|
|
71254
|
-
- \`note\`: \u300CDomain-wide Delegation\u3067 {email} \u306E {calendar} \u306B\u30A2\u30AF\u30BB\u30B9\u300D\u306A\u3069\u306E\u8AAC\u660E
|
|
71255
71214
|
|
|
71256
71215
|
#### \u5236\u7D04
|
|
71257
71216
|
- **\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
|
|
@@ -71274,11 +71233,6 @@ var googleCalendarOnboarding = new ConnectorOnboarding({
|
|
|
71274
71233
|
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:
|
|
71275
71234
|
- \`parameterSlug\`: \`"impersonate-email"\`
|
|
71276
71235
|
- \`options\`: \`[{ value: <ownerEmail>, label: <ownerEmail> }]\`
|
|
71277
|
-
6. Call \`updateConnectionContext\` to record the target:
|
|
71278
|
-
- \`user\`: The final configured email address
|
|
71279
|
-
- \`calendar\`: The selected calendar's name
|
|
71280
|
-
- \`calendarId\`: The selected calendar ID
|
|
71281
|
-
- \`note\`: A description such as "Accessing {email}'s {calendar} via Domain-wide Delegation"
|
|
71282
71236
|
|
|
71283
71237
|
#### Constraints
|
|
71284
71238
|
- **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
|
|
@@ -71704,10 +71658,6 @@ var googleCalendarOauthOnboarding = new ConnectorOnboarding({
|
|
|
71704
71658
|
3. \`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3059:
|
|
71705
71659
|
- \`parameterSlug\`: \`"calendar-id"\`
|
|
71706
71660
|
- \`value\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
|
|
71707
|
-
4. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
71708
|
-
- \`calendar\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FC\u540D
|
|
71709
|
-
- \`calendarId\`: \u9078\u629E\u3055\u308C\u305F\u30AB\u30EC\u30F3\u30C0\u30FCID
|
|
71710
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
71711
71661
|
|
|
71712
71662
|
#### \u5236\u7D04
|
|
71713
71663
|
- **\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
|
|
@@ -71720,10 +71670,6 @@ var googleCalendarOauthOnboarding = new ConnectorOnboarding({
|
|
|
71720
71670
|
3. Call \`updateConnectionParameters\`:
|
|
71721
71671
|
- \`parameterSlug\`: \`"calendar-id"\`
|
|
71722
71672
|
- \`value\`: The selected calendar ID
|
|
71723
|
-
4. Call \`updateConnectionContext\`:
|
|
71724
|
-
- \`calendar\`: The selected calendar's name
|
|
71725
|
-
- \`calendarId\`: The selected calendar ID
|
|
71726
|
-
- \`note\`: Brief description of the setup
|
|
71727
71673
|
|
|
71728
71674
|
#### Constraints
|
|
71729
71675
|
- **Do NOT fetch event data during setup**. Only the metadata requests specified in the steps above are allowed
|
|
@@ -72164,7 +72110,9 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
72164
72110
|
});
|
|
72165
72111
|
const data = await response.json();
|
|
72166
72112
|
if (!response.ok) {
|
|
72167
|
-
const
|
|
72113
|
+
const googleError = data?.error && typeof data.error === "object" ? data.error : null;
|
|
72114
|
+
const googleErrorMessage = googleError && typeof googleError.message === "string" ? googleError.status && typeof googleError.status === "string" ? `${googleError.status}: ${googleError.message}` : googleError.message : null;
|
|
72115
|
+
const errorMessage = googleErrorMessage ?? (typeof data?.error === "string" ? data.error : typeof data?.message === "string" ? data.message : `HTTP ${response.status} ${response.statusText}`);
|
|
72168
72116
|
return { success: false, error: errorMessage };
|
|
72169
72117
|
}
|
|
72170
72118
|
return { success: true, status: response.status, data };
|
|
@@ -73523,9 +73471,6 @@ var hubspotOnboarding = new ConnectorOnboarding({
|
|
|
73523
73471
|
- \`method\`: \`"GET"\`
|
|
73524
73472
|
- \`path\`: \`"/account-info/v3/details"\`
|
|
73525
73473
|
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
|
|
73526
|
-
3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
73527
|
-
- \`account\`: HubSpot\u30A2\u30AB\u30A6\u30F3\u30C8\u540D\u307E\u305F\u306FID
|
|
73528
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
73529
73474
|
|
|
73530
73475
|
#### \u5236\u7D04
|
|
73531
73476
|
- **\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
|
|
@@ -73536,9 +73481,6 @@ var hubspotOnboarding = new ConnectorOnboarding({
|
|
|
73536
73481
|
- \`method\`: \`"GET"\`
|
|
73537
73482
|
- \`path\`: \`"/account-info/v3/details"\`
|
|
73538
73483
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
73539
|
-
3. Call \`updateConnectionContext\`:
|
|
73540
|
-
- \`account\`: HubSpot account name or ID
|
|
73541
|
-
- \`note\`: Brief description of the setup
|
|
73542
73484
|
|
|
73543
73485
|
#### Constraints
|
|
73544
73486
|
- **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -73818,9 +73760,6 @@ var stripeOnboarding = new ConnectorOnboarding({
|
|
|
73818
73760
|
- \`method\`: \`"GET"\`
|
|
73819
73761
|
- \`path\`: \`"/v1/accounts"\`
|
|
73820
73762
|
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
|
|
73821
|
-
3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
73822
|
-
- \`account\`: Stripe\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831
|
|
73823
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
73824
73763
|
|
|
73825
73764
|
#### \u5236\u7D04
|
|
73826
73765
|
- **\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
|
|
@@ -73831,9 +73770,6 @@ var stripeOnboarding = new ConnectorOnboarding({
|
|
|
73831
73770
|
- \`method\`: \`"GET"\`
|
|
73832
73771
|
- \`path\`: \`"/v1/accounts"\`
|
|
73833
73772
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
73834
|
-
3. Call \`updateConnectionContext\`:
|
|
73835
|
-
- \`account\`: Stripe account info
|
|
73836
|
-
- \`note\`: Brief description of the setup
|
|
73837
73773
|
|
|
73838
73774
|
#### Constraints
|
|
73839
73775
|
- **Do NOT read payment data during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -74114,8 +74050,6 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
|
74114
74050
|
- \`method\`: \`"GET"\`
|
|
74115
74051
|
- \`path\`: \`"/v1/balance"\`
|
|
74116
74052
|
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
|
|
74117
|
-
3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
74118
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
74119
74053
|
|
|
74120
74054
|
#### \u5236\u7D04
|
|
74121
74055
|
- **\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
|
|
@@ -74126,8 +74060,6 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
|
74126
74060
|
- \`method\`: \`"GET"\`
|
|
74127
74061
|
- \`path\`: \`"/v1/balance"\`
|
|
74128
74062
|
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)
|
|
74129
|
-
3. Call \`updateConnectionContext\`:
|
|
74130
|
-
- \`note\`: Brief description of the setup
|
|
74131
74063
|
|
|
74132
74064
|
#### Constraints
|
|
74133
74065
|
- **Do NOT read payment data during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -74152,7 +74084,7 @@ var stripeApiKeyConnector = new ConnectorPlugin({
|
|
|
74152
74084
|
description: "Connect to Stripe for payment, customer, and subscription data using a Secret API Key or Restricted API Key.",
|
|
74153
74085
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2QNK0u2doqp41uL0POS4Ks/7a92367e2388ec77c7f4ada143606f9a/stripe.jpeg",
|
|
74154
74086
|
parameters: parameters22,
|
|
74155
|
-
releaseFlag: { dev1: true, dev2:
|
|
74087
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
74156
74088
|
onboarding: stripeApiKeyOnboarding,
|
|
74157
74089
|
systemPrompt: {
|
|
74158
74090
|
en: `### Tools
|
|
@@ -74437,10 +74369,6 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
|
74437
74369
|
- \`method\`: \`"GET"\`
|
|
74438
74370
|
- \`path\`: \`"/meta/bases/{baseId}/tables"\`
|
|
74439
74371
|
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
|
|
74440
|
-
6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
74441
|
-
- \`base\`: \u30D9\u30FC\u30B9ID
|
|
74442
|
-
- \`tables\`: \u30C6\u30FC\u30D6\u30EB\u540D\u4E00\u89A7\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09
|
|
74443
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
74444
74372
|
|
|
74445
74373
|
#### \u5236\u7D04
|
|
74446
74374
|
- **\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
|
|
@@ -74456,10 +74384,6 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
|
74456
74384
|
- \`method\`: \`"GET"\`
|
|
74457
74385
|
- \`path\`: \`"/meta/bases/{baseId}/tables"\`
|
|
74458
74386
|
5. If an error is returned, ask the user to check the base sharing settings
|
|
74459
|
-
6. Call \`updateConnectionContext\`:
|
|
74460
|
-
- \`base\`: The base ID
|
|
74461
|
-
- \`tables\`: Table names (comma-separated)
|
|
74462
|
-
- \`note\`: Brief description of the setup
|
|
74463
74387
|
|
|
74464
74388
|
#### Constraints
|
|
74465
74389
|
- **Do NOT read table record data during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -75043,7 +74967,7 @@ var kintoneApiTokenConnector = new ConnectorPlugin({
|
|
|
75043
74967
|
description: "Connect to kintone for business application data retrieval and analytics using API token authentication.",
|
|
75044
74968
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/76nPGMJFZkMFE3UQNo2JFy/e71dc5f5d5cec1306ce0e17aafbfd9f0/kintone.png",
|
|
75045
74969
|
parameters: parameters25,
|
|
75046
|
-
releaseFlag: { dev1: true, dev2:
|
|
74970
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
75047
74971
|
onboarding: kintoneApiTokenOnboarding,
|
|
75048
74972
|
systemPrompt: {
|
|
75049
74973
|
en: `### Tools
|
|
@@ -76381,7 +76305,7 @@ var amplitudeConnector = new ConnectorPlugin({
|
|
|
76381
76305
|
description: "Connect to Amplitude for product analytics and user behavior data.",
|
|
76382
76306
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2UBJSdRlFJaLq52WUCTBEB/308b59b374cf6c662ac70989860bffd7/amplitude-icon.svg",
|
|
76383
76307
|
parameters: parameters32,
|
|
76384
|
-
releaseFlag: { dev1: true, dev2:
|
|
76308
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
76385
76309
|
onboarding: amplitudeOnboarding,
|
|
76386
76310
|
systemPrompt: {
|
|
76387
76311
|
en: `### Tools
|
|
@@ -76634,7 +76558,7 @@ var attioConnector = new ConnectorPlugin({
|
|
|
76634
76558
|
description: "Connect to Attio for CRM data and relationship intelligence.",
|
|
76635
76559
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/2qqx99vvXJojUM3tSrSWPX/1e7c35e13da6b365b8b475c1effe568f/attio.svg",
|
|
76636
76560
|
parameters: parameters33,
|
|
76637
|
-
releaseFlag: { dev1: true, dev2:
|
|
76561
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
76638
76562
|
onboarding: attioOnboarding,
|
|
76639
76563
|
systemPrompt: {
|
|
76640
76564
|
en: `### Tools
|
|
@@ -77366,9 +77290,6 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
|
|
|
77366
77290
|
- \`method\`: \`"GET"\`
|
|
77367
77291
|
- \`path\`: \`"/admin/api/2024-10/shop.json"\`
|
|
77368
77292
|
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
|
|
77369
|
-
3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
77370
|
-
- \`shop\`: Shopify\u30B7\u30E7\u30C3\u30D7\u60C5\u5831
|
|
77371
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
77372
77293
|
|
|
77373
77294
|
#### \u5236\u7D04
|
|
77374
77295
|
- **\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
|
|
@@ -77379,9 +77300,6 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
|
|
|
77379
77300
|
- \`method\`: \`"GET"\`
|
|
77380
77301
|
- \`path\`: \`"/admin/api/2024-10/shop.json"\`
|
|
77381
77302
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
77382
|
-
3. Call \`updateConnectionContext\`:
|
|
77383
|
-
- \`shop\`: Shopify shop info
|
|
77384
|
-
- \`note\`: Brief description of the setup
|
|
77385
77303
|
|
|
77386
77304
|
#### Constraints
|
|
77387
77305
|
- **Do NOT read business data (orders, customers, etc.) during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -77651,7 +77569,7 @@ var hubspotConnector = new ConnectorPlugin({
|
|
|
77651
77569
|
description: "Connect to HubSpot CRM for contacts, deals, companies, and marketing data using a Personal Access Key.",
|
|
77652
77570
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5UcSkKkzhUMA4RsM45ynuo/43b967e36915ca0fc5d277684b204320/hubspot.svg",
|
|
77653
77571
|
parameters: parameters36,
|
|
77654
|
-
releaseFlag: { dev1: true, dev2:
|
|
77572
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
77655
77573
|
onboarding: hubspotOnboarding2,
|
|
77656
77574
|
systemPrompt: {
|
|
77657
77575
|
en: `### Tools
|
|
@@ -77919,7 +77837,7 @@ var jiraConnector = new ConnectorPlugin({
|
|
|
77919
77837
|
description: "Connect to Jira Cloud for issue tracking, project management, and workflow data retrieval using API token authentication.",
|
|
77920
77838
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/5zt4yjb36szSPPkCECYlPL/bc3e7223dc84fb16a1cce53a80f5afcc/jira.png",
|
|
77921
77839
|
parameters: parameters37,
|
|
77922
|
-
releaseFlag: { dev1: true, dev2:
|
|
77840
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
77923
77841
|
onboarding: jiraOnboarding,
|
|
77924
77842
|
systemPrompt: {
|
|
77925
77843
|
en: `### Tools
|
|
@@ -78194,7 +78112,7 @@ var linearConnector = new ConnectorPlugin({
|
|
|
78194
78112
|
description: "Connect to Linear for project management data \u2014 issues, projects, teams, cycles, and more.",
|
|
78195
78113
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6oR77h6TeniXGdmnp2P2LX/a2ac8630ae52d164363adb0c695d9f0b/linear.webp",
|
|
78196
78114
|
parameters: parameters38,
|
|
78197
|
-
releaseFlag: { dev1: true, dev2:
|
|
78115
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
78198
78116
|
onboarding: linearOnboarding,
|
|
78199
78117
|
systemPrompt: {
|
|
78200
78118
|
en: `### Tools
|
|
@@ -78456,7 +78374,7 @@ var asanaConnector = new ConnectorPlugin({
|
|
|
78456
78374
|
description: "Connect to Asana for project management, task tracking, and team collaboration data.",
|
|
78457
78375
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/3eIdaoqzIIZs2Md0OoDJMf/2fa66e0841adb985da4d3120466f3ec4/asana-icon.png",
|
|
78458
78376
|
parameters: parameters39,
|
|
78459
|
-
releaseFlag: { dev1: true, dev2:
|
|
78377
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
78460
78378
|
onboarding: asanaOnboarding,
|
|
78461
78379
|
systemPrompt: {
|
|
78462
78380
|
en: `### Tools
|
|
@@ -78781,7 +78699,7 @@ var clickhouseConnector = new ConnectorPlugin({
|
|
|
78781
78699
|
description: "Connect to ClickHouse for high-performance columnar analytics and real-time data processing.",
|
|
78782
78700
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/MencimqP92UmucqstLl51/d9f2b6160206f5454b26e223a763ab8f/clickhouse.png",
|
|
78783
78701
|
parameters: parameters40,
|
|
78784
|
-
releaseFlag: { dev1: true, dev2:
|
|
78702
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
78785
78703
|
onboarding: clickhouseOnboarding,
|
|
78786
78704
|
systemPrompt: {
|
|
78787
78705
|
en: `### Tools
|
|
@@ -79189,7 +79107,7 @@ var mongodbConnector = new ConnectorPlugin({
|
|
|
79189
79107
|
description: "Connect to MongoDB for document-oriented data storage and querying.",
|
|
79190
79108
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/48JSUx9HE6oSa9JrHGg2E1/12b4cac65924cac3641d4bafcef37dbe/mongodb-icon.webp",
|
|
79191
79109
|
parameters: parameters41,
|
|
79192
|
-
releaseFlag: { dev1: true, dev2:
|
|
79110
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
79193
79111
|
onboarding: mongodbOnboarding,
|
|
79194
79112
|
systemPrompt: {
|
|
79195
79113
|
en: `### Tools
|
|
@@ -79373,7 +79291,7 @@ var notionConnector = new ConnectorPlugin({
|
|
|
79373
79291
|
description: "Connect to Notion to query databases, pages, and workspace content using an Internal Integration Token.",
|
|
79374
79292
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
|
|
79375
79293
|
parameters: parameters42,
|
|
79376
|
-
releaseFlag: { dev1: true, dev2:
|
|
79294
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
79377
79295
|
onboarding: notionOnboarding,
|
|
79378
79296
|
systemPrompt: {
|
|
79379
79297
|
en: `### Tools
|
|
@@ -79644,9 +79562,6 @@ var notionOauthOnboarding = new ConnectorOnboarding({
|
|
|
79644
79562
|
- \`method\`: \`"GET"\`
|
|
79645
79563
|
- \`path\`: \`"/users/me"\`
|
|
79646
79564
|
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
|
|
79647
|
-
3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
79648
|
-
- \`account\`: Notion\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u540D\u307E\u305F\u306F\u30DC\u30C3\u30C8\u540D
|
|
79649
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
79650
79565
|
|
|
79651
79566
|
#### \u5236\u7D04
|
|
79652
79567
|
- **\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
|
|
@@ -79657,9 +79572,6 @@ var notionOauthOnboarding = new ConnectorOnboarding({
|
|
|
79657
79572
|
- \`method\`: \`"GET"\`
|
|
79658
79573
|
- \`path\`: \`"/users/me"\`
|
|
79659
79574
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
79660
|
-
3. Call \`updateConnectionContext\`:
|
|
79661
|
-
- \`account\`: Notion workspace name or bot name
|
|
79662
|
-
- \`note\`: Brief description of the setup
|
|
79663
79575
|
|
|
79664
79576
|
#### Constraints
|
|
79665
79577
|
- **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -79689,7 +79601,7 @@ var notionOauthConnector = new ConnectorPlugin({
|
|
|
79689
79601
|
description: "Connect to Notion to query databases, pages, and workspace content using OAuth.",
|
|
79690
79602
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/797V5GDDTA8bsfKUHBCoQO/290ec49b70b68ddb4acd3bf0a6ab8bda/notion-icon.webp",
|
|
79691
79603
|
parameters: parameters43,
|
|
79692
|
-
releaseFlag: { dev1: true, dev2:
|
|
79604
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
79693
79605
|
onboarding: notionOauthOnboarding,
|
|
79694
79606
|
proxyPolicy: {
|
|
79695
79607
|
allowlist: [
|
|
@@ -79933,10 +79845,6 @@ var metaAdsOnboarding = new ConnectorOnboarding({
|
|
|
79933
79845
|
- \`parameterSlug\`: \`"ad-account-id"\`
|
|
79934
79846
|
- \`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
|
|
79935
79847
|
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
|
|
79936
|
-
5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
79937
|
-
- \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
|
|
79938
|
-
- \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
|
|
79939
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
79940
79848
|
|
|
79941
79849
|
#### \u5236\u7D04
|
|
79942
79850
|
- **\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
|
|
@@ -79949,10 +79857,6 @@ var metaAdsOnboarding = new ConnectorOnboarding({
|
|
|
79949
79857
|
- \`parameterSlug\`: \`"ad-account-id"\`
|
|
79950
79858
|
- \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
|
|
79951
79859
|
4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
|
|
79952
|
-
5. Call \`updateConnectionContext\`:
|
|
79953
|
-
- \`adAccount\`: The selected account's display name
|
|
79954
|
-
- \`adAccountId\`: The selected account ID
|
|
79955
|
-
- \`note\`: Brief description of the setup
|
|
79956
79860
|
|
|
79957
79861
|
#### Constraints
|
|
79958
79862
|
- **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
|
|
@@ -80342,10 +80246,6 @@ var metaAdsOauthOnboarding = new ConnectorOnboarding({
|
|
|
80342
80246
|
- \`parameterSlug\`: \`"ad-account-id"\`
|
|
80343
80247
|
- \`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
|
|
80344
80248
|
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
|
|
80345
|
-
5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
80346
|
-
- \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
|
|
80347
|
-
- \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
|
|
80348
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
80349
80249
|
|
|
80350
80250
|
#### \u5236\u7D04
|
|
80351
80251
|
- **\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
|
|
@@ -80358,10 +80258,6 @@ var metaAdsOauthOnboarding = new ConnectorOnboarding({
|
|
|
80358
80258
|
- \`parameterSlug\`: \`"ad-account-id"\`
|
|
80359
80259
|
- \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
|
|
80360
80260
|
4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
|
|
80361
|
-
5. Call \`updateConnectionContext\`:
|
|
80362
|
-
- \`adAccount\`: The selected account's display name
|
|
80363
|
-
- \`adAccountId\`: The selected account ID
|
|
80364
|
-
- \`note\`: Brief description of the setup
|
|
80365
80261
|
|
|
80366
80262
|
#### Constraints
|
|
80367
80263
|
- **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
|
|
@@ -80804,10 +80700,6 @@ var tiktokAdsOnboarding = new ConnectorOnboarding({
|
|
|
80804
80700
|
- \`parameterSlug\`: \`"advertiser-id"\`
|
|
80805
80701
|
- \`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
|
|
80806
80702
|
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
|
|
80807
|
-
5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
80808
|
-
- \`advertiser\`: \u9078\u629E\u3055\u308C\u305F\u5E83\u544A\u4E3B\u306E\u8868\u793A\u540D
|
|
80809
|
-
- \`advertiserId\`: \u9078\u629E\u3055\u308C\u305F\u5E83\u544A\u4E3BID
|
|
80810
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
80811
80703
|
|
|
80812
80704
|
#### \u5236\u7D04
|
|
80813
80705
|
- **\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
|
|
@@ -80820,10 +80712,6 @@ var tiktokAdsOnboarding = new ConnectorOnboarding({
|
|
|
80820
80712
|
- \`parameterSlug\`: \`"advertiser-id"\`
|
|
80821
80713
|
- \`options\`: The advertiser list. Each option's \`label\` should be \`Advertiser Name (id: advertiserId)\`, \`value\` should be the advertiser ID
|
|
80822
80714
|
4. The \`label\` of the user's selected advertiser will arrive as a message. Proceed to the next step
|
|
80823
|
-
5. Call \`updateConnectionContext\`:
|
|
80824
|
-
- \`advertiser\`: The selected advertiser's display name
|
|
80825
|
-
- \`advertiserId\`: The selected advertiser ID
|
|
80826
|
-
- \`note\`: Brief description of the setup
|
|
80827
80715
|
|
|
80828
80716
|
#### Constraints
|
|
80829
80717
|
- **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
|
|
@@ -81302,7 +81190,7 @@ var mailchimpConnector = new ConnectorPlugin({
|
|
|
81302
81190
|
description: "Connect to Mailchimp for email marketing, audiences, campaigns, and analytics.",
|
|
81303
81191
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/19Rac6B8eGiLpQb4lKMbG3/10f567f85572aeb16f2ee6aaa6602987/mailchimp.png",
|
|
81304
81192
|
parameters: parameters47,
|
|
81305
|
-
releaseFlag: { dev1: true, dev2:
|
|
81193
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
81306
81194
|
onboarding: mailchimpOnboarding,
|
|
81307
81195
|
systemPrompt: {
|
|
81308
81196
|
en: `### Tools
|
|
@@ -81948,7 +81836,7 @@ var customerioConnector = new ConnectorPlugin({
|
|
|
81948
81836
|
description: "Connect to Customer.io App API for reading customer data, managing campaigns, segments, and sending transactional messages.",
|
|
81949
81837
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/nngohabT7oHDIgQYAVBpz/6f6c7662ef4692eb9869e3e69dd57114/customerio.png",
|
|
81950
81838
|
parameters: parameters49,
|
|
81951
|
-
releaseFlag: { dev1: true, dev2:
|
|
81839
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
81952
81840
|
onboarding: customerioOnboarding,
|
|
81953
81841
|
systemPrompt: {
|
|
81954
81842
|
en: `### Tools
|
|
@@ -82269,10 +82157,6 @@ var gmailOnboarding = new ConnectorOnboarding({
|
|
|
82269
82157
|
5. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
82270
82158
|
- \`method\`: \`"GET"\`
|
|
82271
82159
|
- \`path\`: \`"/me/labels"\`
|
|
82272
|
-
6. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
82273
|
-
- \`email\`: \u8A2D\u5B9A\u3057\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
|
|
82274
|
-
- \`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
|
|
82275
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
82276
82160
|
|
|
82277
82161
|
#### \u5236\u7D04
|
|
82278
82162
|
- **\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
|
|
@@ -82296,10 +82180,6 @@ var gmailOnboarding = new ConnectorOnboarding({
|
|
|
82296
82180
|
5. Call \`${requestToolName7}\` to get the label list:
|
|
82297
82181
|
- \`method\`: \`"GET"\`
|
|
82298
82182
|
- \`path\`: \`"/me/labels"\`
|
|
82299
|
-
6. Call \`updateConnectionContext\`:
|
|
82300
|
-
- \`email\`: The configured email address
|
|
82301
|
-
- \`labels\`: Key label names (comma-separated, including system labels like INBOX, SENT, DRAFT, SPAM, TRASH)
|
|
82302
|
-
- \`note\`: Brief description of the setup
|
|
82303
82183
|
|
|
82304
82184
|
#### Constraints
|
|
82305
82185
|
- **Do NOT read message bodies during setup**. Only the profile and label list requests specified above are allowed
|
|
@@ -82324,7 +82204,7 @@ var gmailConnector = new ConnectorPlugin({
|
|
|
82324
82204
|
description: "Connect to Gmail for email data access using a service account with domain-wide delegation. Read-only access to messages, threads, and labels.",
|
|
82325
82205
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4V3rfaSc1ksFIt2eHBNIwJ/7f3be41a154a6d96dcf229ed0e5858c9/Gmail_icon__2020_.svg.png",
|
|
82326
82206
|
parameters: parameters50,
|
|
82327
|
-
releaseFlag: { dev1: true, dev2:
|
|
82207
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
82328
82208
|
onboarding: gmailOnboarding,
|
|
82329
82209
|
systemPrompt: {
|
|
82330
82210
|
en: `### Tools
|
|
@@ -82661,10 +82541,6 @@ var gmailOnboarding2 = new ConnectorOnboarding({
|
|
|
82661
82541
|
3. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
82662
82542
|
- \`method\`: \`"GET"\`
|
|
82663
82543
|
- \`path\`: \`"/me/labels"\`
|
|
82664
|
-
4. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
82665
|
-
- \`email\`: \u30E6\u30FC\u30B6\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9
|
|
82666
|
-
- \`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
|
|
82667
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
82668
82544
|
|
|
82669
82545
|
#### \u5236\u7D04
|
|
82670
82546
|
- **\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
|
|
@@ -82678,10 +82554,6 @@ var gmailOnboarding2 = new ConnectorOnboarding({
|
|
|
82678
82554
|
3. Call \`${requestToolName8}\` to get the label list:
|
|
82679
82555
|
- \`method\`: \`"GET"\`
|
|
82680
82556
|
- \`path\`: \`"/me/labels"\`
|
|
82681
|
-
4. Call \`updateConnectionContext\`:
|
|
82682
|
-
- \`email\`: The user's email address
|
|
82683
|
-
- \`labels\`: Key label names (comma-separated, including system labels like INBOX, SENT, DRAFT, SPAM, TRASH)
|
|
82684
|
-
- \`note\`: Brief description of the setup
|
|
82685
82557
|
|
|
82686
82558
|
#### Constraints
|
|
82687
82559
|
- **Do NOT read message bodies during setup**. Only the profile and label list requests specified above are allowed
|
|
@@ -83037,10 +82909,6 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
|
|
|
83037
82909
|
- \`parameterSlug\`: \`"ad-account-id"\`
|
|
83038
82910
|
- \`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
|
|
83039
82911
|
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
|
|
83040
|
-
5. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
83041
|
-
- \`adAccount\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8868\u793A\u540D
|
|
83042
|
-
- \`adAccountId\`: \u9078\u629E\u3055\u308C\u305F\u30A2\u30AB\u30A6\u30F3\u30C8ID
|
|
83043
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
83044
82912
|
|
|
83045
82913
|
#### \u5236\u7D04
|
|
83046
82914
|
- **\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
|
|
@@ -83053,10 +82921,6 @@ var linkedinAdsOnboarding = new ConnectorOnboarding({
|
|
|
83053
82921
|
- \`parameterSlug\`: \`"ad-account-id"\`
|
|
83054
82922
|
- \`options\`: The ad account list. Each option's \`label\` should be \`Account Name (id: accountId)\`, \`value\` should be the account ID
|
|
83055
82923
|
4. The \`label\` of the user's selected account will arrive as a message. Proceed to the next step
|
|
83056
|
-
5. Call \`updateConnectionContext\`:
|
|
83057
|
-
- \`adAccount\`: The selected account's display name
|
|
83058
|
-
- \`adAccountId\`: The selected account ID
|
|
83059
|
-
- \`note\`: Brief description of the setup
|
|
83060
82924
|
|
|
83061
82925
|
#### Constraints
|
|
83062
82926
|
- **Do NOT fetch report data during setup**. Only the metadata requests specified in the steps above are allowed
|
|
@@ -83593,7 +83457,7 @@ var zendeskConnector = new ConnectorPlugin({
|
|
|
83593
83457
|
description: "Connect to Zendesk Support for tickets, users, organizations, and customer service data using an API token.",
|
|
83594
83458
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7e9Q7PwV6MJRJMj543m2gl/55385fae903ccfa1599e35be9d3516aa/zendesk-icon.svg",
|
|
83595
83459
|
parameters: parameters53,
|
|
83596
|
-
releaseFlag: { dev1: true, dev2:
|
|
83460
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
83597
83461
|
onboarding: zendeskOnboarding,
|
|
83598
83462
|
systemPrompt: {
|
|
83599
83463
|
en: `### Tools
|
|
@@ -83899,9 +83763,6 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
|
|
|
83899
83763
|
- \`method\`: \`"GET"\`
|
|
83900
83764
|
- \`path\`: \`"/api/v2/account/settings.json"\`
|
|
83901
83765
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
83902
|
-
3. Call \`updateConnectionContext\`:
|
|
83903
|
-
- \`account\`: Zendesk subdomain or account name
|
|
83904
|
-
- \`note\`: Brief description of the setup
|
|
83905
83766
|
|
|
83906
83767
|
#### Constraints
|
|
83907
83768
|
- **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -83912,9 +83773,6 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
|
|
|
83912
83773
|
- \`method\`: \`"GET"\`
|
|
83913
83774
|
- \`path\`: \`"/api/v2/account/settings.json"\`
|
|
83914
83775
|
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
|
|
83915
|
-
3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
83916
|
-
- \`account\`: Zendesk\u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\u307E\u305F\u306F\u30A2\u30AB\u30A6\u30F3\u30C8\u540D
|
|
83917
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
83918
83776
|
|
|
83919
83777
|
#### \u5236\u7D04
|
|
83920
83778
|
- **\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
|
|
@@ -84216,7 +84074,7 @@ var intercomConnector = new ConnectorPlugin({
|
|
|
84216
84074
|
description: "Connect to Intercom for contacts, conversations, companies, and customer engagement data using an Access Token.",
|
|
84217
84075
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/sb2cRMGClpId0LKiSqsok/ae90a0849f21ffe3faf73e04a5676b45/intercom.svg",
|
|
84218
84076
|
parameters: parameters55,
|
|
84219
|
-
releaseFlag: { dev1: true, dev2:
|
|
84077
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
84220
84078
|
onboarding: intercomOnboarding,
|
|
84221
84079
|
systemPrompt: {
|
|
84222
84080
|
en: `### Tools
|
|
@@ -84545,9 +84403,6 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
|
|
|
84545
84403
|
- \`method\`: \`"GET"\`
|
|
84546
84404
|
- \`path\`: \`"/me"\`
|
|
84547
84405
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
84548
|
-
3. Call \`updateConnectionContext\`:
|
|
84549
|
-
- \`account\`: Intercom workspace name or admin email
|
|
84550
|
-
- \`note\`: Brief description of the setup
|
|
84551
84406
|
|
|
84552
84407
|
#### Constraints
|
|
84553
84408
|
- **Do NOT read business data during setup**. Only the metadata request specified in the steps above is allowed
|
|
@@ -84558,9 +84413,6 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
|
|
|
84558
84413
|
- \`method\`: \`"GET"\`
|
|
84559
84414
|
- \`path\`: \`"/me"\`
|
|
84560
84415
|
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
|
|
84561
|
-
3. \`updateConnectionContext\` \u3092\u547C\u3073\u51FA\u3059:
|
|
84562
|
-
- \`account\`: Intercom\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u540D\u307E\u305F\u306F\u7BA1\u7406\u8005\u30E1\u30FC\u30EB
|
|
84563
|
-
- \`note\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5185\u5BB9\u306E\u7C21\u5358\u306A\u8AAC\u660E
|
|
84564
84416
|
|
|
84565
84417
|
#### \u5236\u7D04
|
|
84566
84418
|
- **\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
|
|
@@ -84936,7 +84788,7 @@ var mixpanelConnector = new ConnectorPlugin({
|
|
|
84936
84788
|
description: "Connect to Mixpanel for product analytics, event tracking, and user behavior analysis.",
|
|
84937
84789
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/7ykz0vNRjMqvTVrxS8wsj1/b2cd795be5b373877dee77cc6147c758/images__3_.png",
|
|
84938
84790
|
parameters: parameters57,
|
|
84939
|
-
releaseFlag: { dev1: true, dev2:
|
|
84791
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
84940
84792
|
onboarding: mixpanelOnboarding,
|
|
84941
84793
|
systemPrompt: {
|
|
84942
84794
|
en: `### Tools
|
|
@@ -85431,7 +85283,7 @@ var backlogConnector = new ConnectorPlugin({
|
|
|
85431
85283
|
description: "Connect to Nulab Backlog for project management, issue tracking, and wiki data retrieval using API key authentication.",
|
|
85432
85284
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6KcVBGf3mUHnuCOQgQMvtT/e8558c7990e40e3be46948e9476190fb/backlog-favicon.svg",
|
|
85433
85285
|
parameters: parameters59,
|
|
85434
|
-
releaseFlag: { dev1: true, dev2: true, prod:
|
|
85286
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
85435
85287
|
onboarding: backlogOnboarding,
|
|
85436
85288
|
systemPrompt: {
|
|
85437
85289
|
en: `### Tools
|
|
@@ -85869,7 +85721,7 @@ var gammaConnector = new ConnectorPlugin({
|
|
|
85869
85721
|
description: "Connect to Gamma for AI-powered presentation, document, webpage, and social post generation.",
|
|
85870
85722
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/KoMGPpPcgtB9oDYe1OBjS/1ba7eb061c4497106bf6d249866dc471/gamma.svg",
|
|
85871
85723
|
parameters: parameters60,
|
|
85872
|
-
releaseFlag: { dev1: true, dev2:
|
|
85724
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
85873
85725
|
onboarding: gammaOnboarding,
|
|
85874
85726
|
systemPrompt: {
|
|
85875
85727
|
en: `### Tools
|
|
@@ -86149,7 +86001,7 @@ var sentryConnector = new ConnectorPlugin({
|
|
|
86149
86001
|
description: "Connect to Sentry for error tracking and performance monitoring data.",
|
|
86150
86002
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/4B8ZEGFGjTeMWNnXQb1dAL/ac10f813f02353f5b0cbe64fb5c06d8f/sentry.svg",
|
|
86151
86003
|
parameters: parameters61,
|
|
86152
|
-
releaseFlag: { dev1: true, dev2:
|
|
86004
|
+
releaseFlag: { dev1: true, dev2: true, prod: true },
|
|
86153
86005
|
onboarding: sentryOnboarding,
|
|
86154
86006
|
systemPrompt: {
|
|
86155
86007
|
en: `### Tools
|
|
@@ -86353,6 +86205,713 @@ await sentry.updateIssue("12345", { status: "resolved" });
|
|
|
86353
86205
|
}
|
|
86354
86206
|
});
|
|
86355
86207
|
|
|
86208
|
+
// ../connectors/src/connectors/salesforce/setup.ts
|
|
86209
|
+
var salesforceOnboarding = new ConnectorOnboarding({
|
|
86210
|
+
connectionSetupInstructions: {
|
|
86211
|
+
en: `#### Create a Connected App in Salesforce
|
|
86212
|
+
1. In Salesforce Setup, go to App Manager \u2192 New Connected App
|
|
86213
|
+
2. Under API (Enable OAuth Settings), check "Enable OAuth Settings"
|
|
86214
|
+
3. Add OAuth scopes: "Manage user data via APIs (api)" and "Perform requests at any time (refresh_token, offline_access)"
|
|
86215
|
+
4. Save and note the Consumer Key (client_id) and Consumer Secret (client_secret)
|
|
86216
|
+
|
|
86217
|
+
#### Allow Username-Password Flow
|
|
86218
|
+
1. Go to Setup \u2192 Identity \u2192 OAuth and OpenID Connect Settings
|
|
86219
|
+
2. Enable "Allow OAuth Username-Password Flows"
|
|
86220
|
+
|
|
86221
|
+
#### Reset your Security Token
|
|
86222
|
+
1. Go to Settings \u2192 My Personal Information \u2192 Reset My Security Token
|
|
86223
|
+
2. Salesforce emails you a new security token \u2014 append it to your password when entering the Password parameter (password + securityToken)
|
|
86224
|
+
|
|
86225
|
+
#### Sandbox vs Production
|
|
86226
|
+
- Leave Use Sandbox as "false" (or empty) to connect to production (login.salesforce.com)
|
|
86227
|
+
- Set Use Sandbox to "true" to connect to a sandbox (test.salesforce.com)`,
|
|
86228
|
+
ja: `#### Salesforce \u3067 Connected App \u3092\u4F5C\u6210
|
|
86229
|
+
1. Setup \u2192 App Manager \u2192 New Connected App
|
|
86230
|
+
2. API (Enable OAuth Settings) \u30BB\u30AF\u30B7\u30E7\u30F3\u3067 "Enable OAuth Settings" \u3092\u6709\u52B9\u5316
|
|
86231
|
+
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
|
|
86232
|
+
4. \u4FDD\u5B58\u5F8C\u3001Consumer Key (client_id) \u3068 Consumer Secret (client_secret) \u3092\u63A7\u3048\u308B
|
|
86233
|
+
|
|
86234
|
+
#### Username-Password Flow \u3092\u8A31\u53EF
|
|
86235
|
+
1. Setup \u2192 Identity \u2192 OAuth and OpenID Connect Settings
|
|
86236
|
+
2. "Allow OAuth Username-Password Flows" \u3092\u6709\u52B9\u5316
|
|
86237
|
+
|
|
86238
|
+
#### Security Token \u306E\u767A\u884C
|
|
86239
|
+
1. \u500B\u4EBA\u8A2D\u5B9A \u2192 My Personal Information \u2192 Reset My Security Token
|
|
86240
|
+
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
|
|
86241
|
+
|
|
86242
|
+
#### Sandbox / Production
|
|
86243
|
+
- \u672C\u756A (login.salesforce.com) \u306E\u5834\u5408: Use Sandbox \u3092 "false" \u307E\u305F\u306F\u672A\u5165\u529B
|
|
86244
|
+
- Sandbox (test.salesforce.com) \u306E\u5834\u5408: Use Sandbox \u3092 "true" \u306B\u8A2D\u5B9A`
|
|
86245
|
+
},
|
|
86246
|
+
dataOverviewInstructions: {
|
|
86247
|
+
en: `1. Call salesforce_request with GET /services/data/v60.0/sobjects/ to list available sObjects (standard + custom)
|
|
86248
|
+
2. Call salesforce_request with GET /services/data/v60.0/sobjects/Account/describe to inspect Account fields; repeat for Contact, Opportunity, Lead as needed
|
|
86249
|
+
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`,
|
|
86250
|
+
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
|
|
86251
|
+
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
|
|
86252
|
+
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`
|
|
86253
|
+
}
|
|
86254
|
+
});
|
|
86255
|
+
|
|
86256
|
+
// ../connectors/src/connectors/salesforce/parameters.ts
|
|
86257
|
+
var parameters62 = {
|
|
86258
|
+
username: new ParameterDefinition({
|
|
86259
|
+
slug: "username",
|
|
86260
|
+
name: "Username",
|
|
86261
|
+
description: "Your Salesforce account username (the email you use to sign in).",
|
|
86262
|
+
envVarBaseKey: "SALESFORCE_USERNAME",
|
|
86263
|
+
type: "text",
|
|
86264
|
+
secret: false,
|
|
86265
|
+
required: true
|
|
86266
|
+
}),
|
|
86267
|
+
password: new ParameterDefinition({
|
|
86268
|
+
slug: "password",
|
|
86269
|
+
name: "Password",
|
|
86270
|
+
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.",
|
|
86271
|
+
envVarBaseKey: "SALESFORCE_PASSWORD",
|
|
86272
|
+
type: "text",
|
|
86273
|
+
secret: true,
|
|
86274
|
+
required: true
|
|
86275
|
+
}),
|
|
86276
|
+
clientId: new ParameterDefinition({
|
|
86277
|
+
slug: "client-id",
|
|
86278
|
+
name: "Consumer Key",
|
|
86279
|
+
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.",
|
|
86280
|
+
envVarBaseKey: "SALESFORCE_CLIENT_ID",
|
|
86281
|
+
type: "text",
|
|
86282
|
+
secret: false,
|
|
86283
|
+
required: true
|
|
86284
|
+
}),
|
|
86285
|
+
clientSecret: new ParameterDefinition({
|
|
86286
|
+
slug: "client-secret",
|
|
86287
|
+
name: "Consumer Secret",
|
|
86288
|
+
description: "The Consumer Secret (client_secret) of your Salesforce Connected App.",
|
|
86289
|
+
envVarBaseKey: "SALESFORCE_CLIENT_SECRET",
|
|
86290
|
+
type: "text",
|
|
86291
|
+
secret: true,
|
|
86292
|
+
required: true
|
|
86293
|
+
}),
|
|
86294
|
+
isSandbox: new ParameterDefinition({
|
|
86295
|
+
slug: "is-sandbox",
|
|
86296
|
+
name: "Use Sandbox",
|
|
86297
|
+
description: 'Set to "true" to authenticate against a Salesforce sandbox (test.salesforce.com) instead of production (login.salesforce.com). Defaults to "false".',
|
|
86298
|
+
envVarBaseKey: "SALESFORCE_IS_SANDBOX",
|
|
86299
|
+
type: "text",
|
|
86300
|
+
secret: false,
|
|
86301
|
+
required: false
|
|
86302
|
+
})
|
|
86303
|
+
};
|
|
86304
|
+
|
|
86305
|
+
// ../connectors/src/connectors/salesforce/tools/request.ts
|
|
86306
|
+
import { z as z77 } from "zod";
|
|
86307
|
+
var REQUEST_TIMEOUT_MS59 = 6e4;
|
|
86308
|
+
var inputSchema75 = z77.object({
|
|
86309
|
+
toolUseIntent: z77.string().optional().describe(
|
|
86310
|
+
"Brief description of what you intend to accomplish with this tool call"
|
|
86311
|
+
),
|
|
86312
|
+
connectionId: z77.string().describe("ID of the Salesforce connection to use"),
|
|
86313
|
+
method: z77.enum(["GET", "POST", "PATCH", "DELETE"]).describe(
|
|
86314
|
+
"HTTP method. GET for reading resources and SOQL queries, POST for creating, PATCH for updating, DELETE for removing."
|
|
86315
|
+
),
|
|
86316
|
+
path: z77.string().describe(
|
|
86317
|
+
"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/'."
|
|
86318
|
+
),
|
|
86319
|
+
body: z77.record(z77.string(), z77.unknown()).optional().describe("Request body (JSON) for POST/PATCH requests")
|
|
86320
|
+
});
|
|
86321
|
+
var outputSchema75 = z77.discriminatedUnion("success", [
|
|
86322
|
+
z77.object({
|
|
86323
|
+
success: z77.literal(true),
|
|
86324
|
+
status: z77.number(),
|
|
86325
|
+
data: z77.record(z77.string(), z77.unknown())
|
|
86326
|
+
}),
|
|
86327
|
+
z77.object({
|
|
86328
|
+
success: z77.literal(false),
|
|
86329
|
+
error: z77.string()
|
|
86330
|
+
})
|
|
86331
|
+
]);
|
|
86332
|
+
var requestTool47 = new ConnectorTool({
|
|
86333
|
+
name: "request",
|
|
86334
|
+
description: `Send authenticated requests to the Salesforce REST API.
|
|
86335
|
+
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.
|
|
86336
|
+
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.
|
|
86337
|
+
Prefer SOQL via the /query endpoint for filtered, joined, or aggregated reads rather than paginating /sobjects/{Type} endpoints.`,
|
|
86338
|
+
inputSchema: inputSchema75,
|
|
86339
|
+
outputSchema: outputSchema75,
|
|
86340
|
+
async execute({ connectionId, method, path: path5, body }, connections) {
|
|
86341
|
+
const connection = connections.find((c6) => c6.id === connectionId);
|
|
86342
|
+
if (!connection) {
|
|
86343
|
+
return {
|
|
86344
|
+
success: false,
|
|
86345
|
+
error: `Connection ${connectionId} not found`
|
|
86346
|
+
};
|
|
86347
|
+
}
|
|
86348
|
+
console.log(
|
|
86349
|
+
`[connector-request] salesforce/${connection.name}: ${method} ${path5}`
|
|
86350
|
+
);
|
|
86351
|
+
try {
|
|
86352
|
+
const username = parameters62.username.getValue(connection);
|
|
86353
|
+
const password = parameters62.password.getValue(connection);
|
|
86354
|
+
const clientId = parameters62.clientId.getValue(connection);
|
|
86355
|
+
const clientSecret = parameters62.clientSecret.getValue(connection);
|
|
86356
|
+
const isSandbox = parameters62.isSandbox.tryGetValue(connection)?.toLowerCase() === "true";
|
|
86357
|
+
const loginHost = isSandbox ? "https://test.salesforce.com" : "https://login.salesforce.com";
|
|
86358
|
+
const tokenBody = new URLSearchParams({
|
|
86359
|
+
grant_type: "password",
|
|
86360
|
+
client_id: clientId,
|
|
86361
|
+
client_secret: clientSecret,
|
|
86362
|
+
username,
|
|
86363
|
+
password
|
|
86364
|
+
});
|
|
86365
|
+
const tokenRes = await fetch(`${loginHost}/services/oauth2/token`, {
|
|
86366
|
+
method: "POST",
|
|
86367
|
+
headers: {
|
|
86368
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
86369
|
+
},
|
|
86370
|
+
body: tokenBody.toString()
|
|
86371
|
+
});
|
|
86372
|
+
if (!tokenRes.ok) {
|
|
86373
|
+
const errText = await tokenRes.text().catch(() => "(unreadable body)");
|
|
86374
|
+
return {
|
|
86375
|
+
success: false,
|
|
86376
|
+
error: `Failed to obtain access token: ${tokenRes.status} ${tokenRes.statusText} \u2014 ${errText}`
|
|
86377
|
+
};
|
|
86378
|
+
}
|
|
86379
|
+
const tokenJson = await tokenRes.json();
|
|
86380
|
+
if (!tokenJson.access_token || !tokenJson.instance_url) {
|
|
86381
|
+
return {
|
|
86382
|
+
success: false,
|
|
86383
|
+
error: "access_token or instance_url not found in token response"
|
|
86384
|
+
};
|
|
86385
|
+
}
|
|
86386
|
+
const url = `${tokenJson.instance_url}${path5.startsWith("/") ? "" : "/"}${path5}`;
|
|
86387
|
+
const controller = new AbortController();
|
|
86388
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS59);
|
|
86389
|
+
try {
|
|
86390
|
+
const response = await fetch(url, {
|
|
86391
|
+
method,
|
|
86392
|
+
headers: {
|
|
86393
|
+
Authorization: `Bearer ${tokenJson.access_token}`,
|
|
86394
|
+
"Content-Type": "application/json"
|
|
86395
|
+
},
|
|
86396
|
+
body: body ? JSON.stringify(body) : void 0,
|
|
86397
|
+
signal: controller.signal
|
|
86398
|
+
});
|
|
86399
|
+
const text = await response.text();
|
|
86400
|
+
let data;
|
|
86401
|
+
try {
|
|
86402
|
+
data = text ? JSON.parse(text) : {};
|
|
86403
|
+
} catch {
|
|
86404
|
+
data = { raw: text };
|
|
86405
|
+
}
|
|
86406
|
+
if (!response.ok) {
|
|
86407
|
+
let errorMessage = `HTTP ${response.status} ${response.statusText}`;
|
|
86408
|
+
if (Array.isArray(data) && data.length > 0) {
|
|
86409
|
+
const first = data[0];
|
|
86410
|
+
if (first.message) {
|
|
86411
|
+
errorMessage = first.errorCode ? `${first.errorCode}: ${first.message}` : first.message;
|
|
86412
|
+
}
|
|
86413
|
+
} else if (typeof data.message === "string") {
|
|
86414
|
+
errorMessage = data.message;
|
|
86415
|
+
} else if (typeof data.error === "string") {
|
|
86416
|
+
errorMessage = data.error;
|
|
86417
|
+
}
|
|
86418
|
+
return { success: false, error: errorMessage };
|
|
86419
|
+
}
|
|
86420
|
+
return { success: true, status: response.status, data };
|
|
86421
|
+
} finally {
|
|
86422
|
+
clearTimeout(timeout);
|
|
86423
|
+
}
|
|
86424
|
+
} catch (err) {
|
|
86425
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
86426
|
+
return { success: false, error: msg };
|
|
86427
|
+
}
|
|
86428
|
+
}
|
|
86429
|
+
});
|
|
86430
|
+
|
|
86431
|
+
// ../connectors/src/connectors/salesforce/index.ts
|
|
86432
|
+
var tools62 = { request: requestTool47 };
|
|
86433
|
+
var salesforceConnector = new ConnectorPlugin({
|
|
86434
|
+
slug: "salesforce",
|
|
86435
|
+
authType: AUTH_TYPES.USER_PASSWORD,
|
|
86436
|
+
name: "Salesforce",
|
|
86437
|
+
description: "Connect to Salesforce CRM for accounts, contacts, opportunities, leads, cases, and custom objects via SOQL and the REST API.",
|
|
86438
|
+
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/6vZlbrUKhxXIiuvWJlb8YB/bbc5e08b88de46c8ed338a74c7d0abb3/salesforce-icon.png",
|
|
86439
|
+
parameters: parameters62,
|
|
86440
|
+
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
86441
|
+
onboarding: salesforceOnboarding,
|
|
86442
|
+
systemPrompt: {
|
|
86443
|
+
en: `### Tools
|
|
86444
|
+
|
|
86445
|
+
- \`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.
|
|
86446
|
+
|
|
86447
|
+
### Business Logic
|
|
86448
|
+
|
|
86449
|
+
The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
|
|
86450
|
+
|
|
86451
|
+
SDK methods (client created via \`connection(connectionId)\`):
|
|
86452
|
+
- \`client.request(path, init?)\` \u2014 low-level authenticated fetch against the Salesforce instance URL
|
|
86453
|
+
- \`client.query(soql)\` \u2014 run a SOQL query and return \`{ totalSize, done, records, nextRecordsUrl? }\`
|
|
86454
|
+
- \`client.queryMore(nextRecordsUrl)\` \u2014 fetch the next page of SOQL results
|
|
86455
|
+
- \`client.describeSObject(objectType)\` \u2014 describe an sObject's metadata
|
|
86456
|
+
- \`client.getRecord(objectType, id, options?)\` \u2014 fetch a single record (optionally restrict fields)
|
|
86457
|
+
- \`client.createRecord(objectType, fields)\` \u2014 create a new record
|
|
86458
|
+
- \`client.updateRecord(objectType, id, fields)\` \u2014 patch an existing record
|
|
86459
|
+
- \`client.deleteRecord(objectType, id)\` \u2014 delete a record
|
|
86460
|
+
|
|
86461
|
+
\`\`\`ts
|
|
86462
|
+
import type { Context } from "hono";
|
|
86463
|
+
import { connection } from "@squadbase/vite-server/connectors/salesforce";
|
|
86464
|
+
|
|
86465
|
+
const salesforce = connection("<connectionId>");
|
|
86466
|
+
|
|
86467
|
+
export default async function handler(c: Context) {
|
|
86468
|
+
const { industry, limit = 50 } = await c.req.json<{
|
|
86469
|
+
industry?: string;
|
|
86470
|
+
limit?: number;
|
|
86471
|
+
}>();
|
|
86472
|
+
|
|
86473
|
+
const where = industry
|
|
86474
|
+
? \`WHERE Industry = '\${industry.replace(/'/g, "\\\\'")}'\`
|
|
86475
|
+
: "";
|
|
86476
|
+
const soql = \`SELECT Id, Name, Industry, AnnualRevenue FROM Account \${where} ORDER BY AnnualRevenue DESC NULLS LAST LIMIT \${limit}\`;
|
|
86477
|
+
|
|
86478
|
+
const { records } = await salesforce.query<{
|
|
86479
|
+
Id: string;
|
|
86480
|
+
Name: string;
|
|
86481
|
+
Industry: string | null;
|
|
86482
|
+
AnnualRevenue: number | null;
|
|
86483
|
+
}>(soql);
|
|
86484
|
+
|
|
86485
|
+
return c.json({ accounts: records });
|
|
86486
|
+
}
|
|
86487
|
+
\`\`\`
|
|
86488
|
+
|
|
86489
|
+
### Salesforce REST API Reference
|
|
86490
|
+
|
|
86491
|
+
- Login host: \`https://login.salesforce.com\` (production) or \`https://test.salesforce.com\` (sandbox)
|
|
86492
|
+
- Token endpoint: \`POST /services/oauth2/token\` (grant_type=password + client_id/secret + username/password)
|
|
86493
|
+
- Base path after login: \`{instance_url}/services/data/v60.0\`
|
|
86494
|
+
- Authentication: Bearer token (handled automatically per request)
|
|
86495
|
+
- Pagination (SOQL): follow \`nextRecordsUrl\` from the response (absolute path starting with \`/services/data/v60.0/query/...\`)
|
|
86496
|
+
|
|
86497
|
+
#### Common Endpoints
|
|
86498
|
+
- GET \`/services/data/\` \u2014 List available API versions
|
|
86499
|
+
- GET \`/services/data/v60.0/sobjects/\` \u2014 List all sObjects (standard + custom)
|
|
86500
|
+
- GET \`/services/data/v60.0/sobjects/{Type}/describe\` \u2014 Describe an sObject (fields, relationships, picklists)
|
|
86501
|
+
- GET \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Get a record (supports \`?fields=...\`)
|
|
86502
|
+
- POST \`/services/data/v60.0/sobjects/{Type}\` \u2014 Create a record
|
|
86503
|
+
- PATCH \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Update a record
|
|
86504
|
+
- DELETE \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 Delete a record
|
|
86505
|
+
- GET \`/services/data/v60.0/query?q={soql}\` \u2014 Run SOQL
|
|
86506
|
+
- GET \`/services/data/v60.0/search?q={sosl}\` \u2014 Run SOSL
|
|
86507
|
+
|
|
86508
|
+
#### SOQL Reference
|
|
86509
|
+
- SELECT column list is required (no \`SELECT *\`)
|
|
86510
|
+
- Filter: \`WHERE\`, \`AND\` / \`OR\`, parent/child relationship fields (e.g., \`Account.Name\`)
|
|
86511
|
+
- Sort: \`ORDER BY field [ASC|DESC] [NULLS FIRST|NULLS LAST]\`
|
|
86512
|
+
- Paginate: \`LIMIT n\`, \`OFFSET m\`; for large result sets, follow \`nextRecordsUrl\` instead of OFFSET
|
|
86513
|
+
- Aggregate: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
|
|
86514
|
+
- Parent-to-child subquery: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``,
|
|
86515
|
+
ja: `### \u30C4\u30FC\u30EB
|
|
86516
|
+
|
|
86517
|
+
- \`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
|
|
86518
|
+
|
|
86519
|
+
### Business Logic
|
|
86520
|
+
|
|
86521
|
+
\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
|
|
86522
|
+
|
|
86523
|
+
SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
|
|
86524
|
+
- \`client.request(path, init?)\` \u2014 Salesforce \u306E instance URL \u306B\u5BFE\u3059\u308B\u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304D fetch
|
|
86525
|
+
- \`client.query(soql)\` \u2014 SOQL \u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3057 \`{ totalSize, done, records, nextRecordsUrl? }\` \u3092\u8FD4\u5374
|
|
86526
|
+
- \`client.queryMore(nextRecordsUrl)\` \u2014 SOQL \u7D50\u679C\u306E\u6B21\u30DA\u30FC\u30B8\u3092\u53D6\u5F97
|
|
86527
|
+
- \`client.describeSObject(objectType)\` \u2014 sObject \u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
|
|
86528
|
+
- \`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
|
|
86529
|
+
- \`client.createRecord(objectType, fields)\` \u2014 \u30EC\u30B3\u30FC\u30C9\u3092\u65B0\u898F\u4F5C\u6210
|
|
86530
|
+
- \`client.updateRecord(objectType, id, fields)\` \u2014 \u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u66F4\u65B0\uFF08PATCH\uFF09
|
|
86531
|
+
- \`client.deleteRecord(objectType, id)\` \u2014 \u30EC\u30B3\u30FC\u30C9\u3092\u524A\u9664
|
|
86532
|
+
|
|
86533
|
+
\`\`\`ts
|
|
86534
|
+
import type { Context } from "hono";
|
|
86535
|
+
import { connection } from "@squadbase/vite-server/connectors/salesforce";
|
|
86536
|
+
|
|
86537
|
+
const salesforce = connection("<connectionId>");
|
|
86538
|
+
|
|
86539
|
+
export default async function handler(c: Context) {
|
|
86540
|
+
const { industry, limit = 50 } = await c.req.json<{
|
|
86541
|
+
industry?: string;
|
|
86542
|
+
limit?: number;
|
|
86543
|
+
}>();
|
|
86544
|
+
|
|
86545
|
+
const where = industry
|
|
86546
|
+
? \`WHERE Industry = '\${industry.replace(/'/g, "\\\\'")}'\`
|
|
86547
|
+
: "";
|
|
86548
|
+
const soql = \`SELECT Id, Name, Industry, AnnualRevenue FROM Account \${where} ORDER BY AnnualRevenue DESC NULLS LAST LIMIT \${limit}\`;
|
|
86549
|
+
|
|
86550
|
+
const { records } = await salesforce.query<{
|
|
86551
|
+
Id: string;
|
|
86552
|
+
Name: string;
|
|
86553
|
+
Industry: string | null;
|
|
86554
|
+
AnnualRevenue: number | null;
|
|
86555
|
+
}>(soql);
|
|
86556
|
+
|
|
86557
|
+
return c.json({ accounts: records });
|
|
86558
|
+
}
|
|
86559
|
+
\`\`\`
|
|
86560
|
+
|
|
86561
|
+
### Salesforce REST API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
|
|
86562
|
+
|
|
86563
|
+
- \u30ED\u30B0\u30A4\u30F3\u30DB\u30B9\u30C8: \`https://login.salesforce.com\`\uFF08\u672C\u756A\uFF09\u307E\u305F\u306F \`https://test.salesforce.com\`\uFF08Sandbox\uFF09
|
|
86564
|
+
- \u30C8\u30FC\u30AF\u30F3\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8: \`POST /services/oauth2/token\`\uFF08grant_type=password + client_id/secret + username/password\uFF09
|
|
86565
|
+
- \u30ED\u30B0\u30A4\u30F3\u5F8C\u306E\u30D9\u30FC\u30B9\u30D1\u30B9: \`{instance_url}/services/data/v60.0\`
|
|
86566
|
+
- \u8A8D\u8A3C: Bearer \u30C8\u30FC\u30AF\u30F3\uFF08\u30EA\u30AF\u30A8\u30B9\u30C8\u3054\u3068\u306B\u81EA\u52D5\u8A2D\u5B9A\uFF09
|
|
86567
|
+
- \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
|
|
86568
|
+
|
|
86569
|
+
#### \u4E3B\u8981\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
|
|
86570
|
+
- GET \`/services/data/\` \u2014 \u5229\u7528\u53EF\u80FD\u306A API \u30D0\u30FC\u30B8\u30E7\u30F3\u4E00\u89A7
|
|
86571
|
+
- GET \`/services/data/v60.0/sobjects/\` \u2014 sObject \u4E00\u89A7\uFF08\u6A19\u6E96 + \u30AB\u30B9\u30BF\u30E0\uFF09
|
|
86572
|
+
- 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
|
|
86573
|
+
- GET \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\uFF08\`?fields=...\` \u3067\u7D5E\u308A\u8FBC\u307F\u53EF\uFF09
|
|
86574
|
+
- POST \`/services/data/v60.0/sobjects/{Type}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u4F5C\u6210
|
|
86575
|
+
- PATCH \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u66F4\u65B0
|
|
86576
|
+
- DELETE \`/services/data/v60.0/sobjects/{Type}/{id}\` \u2014 \u30EC\u30B3\u30FC\u30C9\u524A\u9664
|
|
86577
|
+
- GET \`/services/data/v60.0/query?q={soql}\` \u2014 SOQL \u3092\u5B9F\u884C
|
|
86578
|
+
- GET \`/services/data/v60.0/search?q={sosl}\` \u2014 SOSL \u3092\u5B9F\u884C
|
|
86579
|
+
|
|
86580
|
+
#### SOQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
|
|
86581
|
+
- SELECT \u5217\u306E\u660E\u793A\u304C\u5FC5\u9808\uFF08\`SELECT *\` \u306F\u4E0D\u53EF\uFF09
|
|
86582
|
+
- \u30D5\u30A3\u30EB\u30BF: \`WHERE\`\u3001\`AND\` / \`OR\`\u3001\u89AA\u5B50\u30EA\u30EC\u30FC\u30B7\u30E7\u30F3\u53C2\u7167\uFF08\u4F8B: \`Account.Name\`\uFF09
|
|
86583
|
+
- \u4E26\u3073\u66FF\u3048: \`ORDER BY field [ASC|DESC] [NULLS FIRST|NULLS LAST]\`
|
|
86584
|
+
- \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
|
|
86585
|
+
- \u96C6\u8A08: \`GROUP BY\`, \`HAVING\`, \`COUNT()\`, \`SUM()\`, \`AVG()\`, \`MIN()\`, \`MAX()\`
|
|
86586
|
+
- \u89AA\u2192\u5B50\u30B5\u30D6\u30AF\u30A8\u30EA: \`SELECT Id, Name, (SELECT Id, Email FROM Contacts) FROM Account\``
|
|
86587
|
+
},
|
|
86588
|
+
tools: tools62
|
|
86589
|
+
});
|
|
86590
|
+
|
|
86591
|
+
// ../connectors/src/connectors/influxdb/setup.ts
|
|
86592
|
+
var influxdbOnboarding = new ConnectorOnboarding({
|
|
86593
|
+
connectionSetupInstructions: {
|
|
86594
|
+
en: `#### Generate an API Token
|
|
86595
|
+
1. Sign in to your InfluxDB Cloud / OSS instance
|
|
86596
|
+
2. Go to Load Data \u2192 API Tokens \u2192 Generate API Token
|
|
86597
|
+
3. Create an All-Access or Custom token with at least read permission on your target database/bucket
|
|
86598
|
+
4. Copy the token into the API Token parameter
|
|
86599
|
+
|
|
86600
|
+
#### Confirm the Database (or Bucket) Name
|
|
86601
|
+
- InfluxDB 3: use the database name
|
|
86602
|
+
- InfluxDB 2: use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
|
|
86603
|
+
|
|
86604
|
+
#### Organization (InfluxDB 2 only)
|
|
86605
|
+
- If you are on InfluxDB 2, set the Organization parameter to the org that owns the bucket
|
|
86606
|
+
- For InfluxDB 3 Cloud you can leave Organization blank`,
|
|
86607
|
+
ja: `#### API \u30C8\u30FC\u30AF\u30F3\u306E\u767A\u884C
|
|
86608
|
+
1. InfluxDB Cloud / OSS \u306B\u30B5\u30A4\u30F3\u30A4\u30F3
|
|
86609
|
+
2. Load Data \u2192 API Tokens \u2192 Generate API Token
|
|
86610
|
+
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
|
|
86611
|
+
4. \u767A\u884C\u3057\u305F\u30C8\u30FC\u30AF\u30F3\u3092 API Token \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8CBC\u308A\u4ED8\u3051
|
|
86612
|
+
|
|
86613
|
+
#### Database (\u307E\u305F\u306F Bucket) \u540D\u306E\u78BA\u8A8D
|
|
86614
|
+
- InfluxDB 3: database \u540D\u3092\u4F7F\u7528
|
|
86615
|
+
- 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
|
|
86616
|
+
|
|
86617
|
+
#### Organization\uFF08InfluxDB 2 \u306E\u307F\uFF09
|
|
86618
|
+
- InfluxDB 2 \u306E\u5834\u5408\u3001bucket \u3092\u4FDD\u6709\u3059\u308B\u7D44\u7E54\u540D\u3092 Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8A2D\u5B9A
|
|
86619
|
+
- InfluxDB 3 Cloud \u306E\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
|
|
86620
|
+
},
|
|
86621
|
+
dataOverviewInstructions: {
|
|
86622
|
+
en: `1. For InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
|
|
86623
|
+
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" }
|
|
86624
|
+
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`,
|
|
86625
|
+
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
|
|
86626
|
+
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
|
|
86627
|
+
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`
|
|
86628
|
+
}
|
|
86629
|
+
});
|
|
86630
|
+
|
|
86631
|
+
// ../connectors/src/connectors/influxdb/parameters.ts
|
|
86632
|
+
var parameters63 = {
|
|
86633
|
+
url: new ParameterDefinition({
|
|
86634
|
+
slug: "url",
|
|
86635
|
+
name: "InfluxDB URL",
|
|
86636
|
+
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.",
|
|
86637
|
+
envVarBaseKey: "INFLUXDB_URL",
|
|
86638
|
+
type: "text",
|
|
86639
|
+
secret: false,
|
|
86640
|
+
required: true
|
|
86641
|
+
}),
|
|
86642
|
+
token: new ParameterDefinition({
|
|
86643
|
+
slug: "token",
|
|
86644
|
+
name: "API Token",
|
|
86645
|
+
description: "The API token used to authenticate against your InfluxDB instance. Generate one from the InfluxDB UI (Load Data \u2192 API Tokens).",
|
|
86646
|
+
envVarBaseKey: "INFLUXDB_TOKEN",
|
|
86647
|
+
type: "text",
|
|
86648
|
+
secret: true,
|
|
86649
|
+
required: true
|
|
86650
|
+
}),
|
|
86651
|
+
database: new ParameterDefinition({
|
|
86652
|
+
slug: "database",
|
|
86653
|
+
name: "Database",
|
|
86654
|
+
description: "The default database to query. For InfluxDB 3 this is the database name; for InfluxDB 2 use the bucket name.",
|
|
86655
|
+
envVarBaseKey: "INFLUXDB_DATABASE",
|
|
86656
|
+
type: "text",
|
|
86657
|
+
secret: false,
|
|
86658
|
+
required: true
|
|
86659
|
+
}),
|
|
86660
|
+
org: new ParameterDefinition({
|
|
86661
|
+
slug: "org",
|
|
86662
|
+
name: "Organization",
|
|
86663
|
+
description: "The InfluxDB organization name. Required for InfluxDB 2.x Flux queries and writes; optional for InfluxDB 3.",
|
|
86664
|
+
envVarBaseKey: "INFLUXDB_ORG",
|
|
86665
|
+
type: "text",
|
|
86666
|
+
secret: false,
|
|
86667
|
+
required: false
|
|
86668
|
+
})
|
|
86669
|
+
};
|
|
86670
|
+
|
|
86671
|
+
// ../connectors/src/connectors/influxdb/tools/request.ts
|
|
86672
|
+
import { z as z78 } from "zod";
|
|
86673
|
+
var REQUEST_TIMEOUT_MS60 = 6e4;
|
|
86674
|
+
var inputSchema76 = z78.object({
|
|
86675
|
+
toolUseIntent: z78.string().optional().describe(
|
|
86676
|
+
"Brief description of what you intend to accomplish with this tool call"
|
|
86677
|
+
),
|
|
86678
|
+
connectionId: z78.string().describe("ID of the InfluxDB connection to use"),
|
|
86679
|
+
method: z78.enum(["GET", "POST", "DELETE"]).describe(
|
|
86680
|
+
"HTTP method. POST for SQL/InfluxQL/Flux queries and writes, GET for metadata endpoints, DELETE for delete endpoints."
|
|
86681
|
+
),
|
|
86682
|
+
path: z78.string().describe(
|
|
86683
|
+
"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."
|
|
86684
|
+
),
|
|
86685
|
+
body: z78.union([z78.record(z78.string(), z78.unknown()), z78.string()]).optional().describe(
|
|
86686
|
+
"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."
|
|
86687
|
+
),
|
|
86688
|
+
contentType: z78.string().optional().describe(
|
|
86689
|
+
"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'."
|
|
86690
|
+
)
|
|
86691
|
+
});
|
|
86692
|
+
var outputSchema76 = z78.discriminatedUnion("success", [
|
|
86693
|
+
z78.object({
|
|
86694
|
+
success: z78.literal(true),
|
|
86695
|
+
status: z78.number(),
|
|
86696
|
+
data: z78.unknown()
|
|
86697
|
+
}),
|
|
86698
|
+
z78.object({
|
|
86699
|
+
success: z78.literal(false),
|
|
86700
|
+
error: z78.string()
|
|
86701
|
+
})
|
|
86702
|
+
]);
|
|
86703
|
+
var requestTool48 = new ConnectorTool({
|
|
86704
|
+
name: "request",
|
|
86705
|
+
description: `Send authenticated requests to the InfluxDB HTTP API.
|
|
86706
|
+
Authentication is handled automatically using the API token (\`Authorization: Token {token}\`). The instance URL is resolved from the connection.
|
|
86707
|
+
Use this tool for all InfluxDB interactions: running SQL / InfluxQL / Flux queries, writing line protocol, and managing buckets / databases.
|
|
86708
|
+
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.`,
|
|
86709
|
+
inputSchema: inputSchema76,
|
|
86710
|
+
outputSchema: outputSchema76,
|
|
86711
|
+
async execute({ connectionId, method, path: path5, body, contentType }, connections) {
|
|
86712
|
+
const connection = connections.find((c6) => c6.id === connectionId);
|
|
86713
|
+
if (!connection) {
|
|
86714
|
+
return {
|
|
86715
|
+
success: false,
|
|
86716
|
+
error: `Connection ${connectionId} not found`
|
|
86717
|
+
};
|
|
86718
|
+
}
|
|
86719
|
+
console.log(
|
|
86720
|
+
`[connector-request] influxdb/${connection.name}: ${method} ${path5}`
|
|
86721
|
+
);
|
|
86722
|
+
try {
|
|
86723
|
+
const url = parameters63.url.getValue(connection).replace(/\/$/, "");
|
|
86724
|
+
const token = parameters63.token.getValue(connection);
|
|
86725
|
+
const fullUrl = `${url}${path5.startsWith("/") ? "" : "/"}${path5}`;
|
|
86726
|
+
const controller = new AbortController();
|
|
86727
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS60);
|
|
86728
|
+
const resolvedContentType = contentType ?? (typeof body === "string" ? "text/plain; charset=utf-8" : "application/json");
|
|
86729
|
+
const serializedBody = body === void 0 ? void 0 : typeof body === "string" ? body : JSON.stringify(body);
|
|
86730
|
+
try {
|
|
86731
|
+
const response = await fetch(fullUrl, {
|
|
86732
|
+
method,
|
|
86733
|
+
headers: {
|
|
86734
|
+
Authorization: `Token ${token}`,
|
|
86735
|
+
"Content-Type": resolvedContentType,
|
|
86736
|
+
Accept: "application/json"
|
|
86737
|
+
},
|
|
86738
|
+
body: serializedBody,
|
|
86739
|
+
signal: controller.signal
|
|
86740
|
+
});
|
|
86741
|
+
const text = await response.text();
|
|
86742
|
+
let data;
|
|
86743
|
+
const resContentType = response.headers.get("content-type") ?? "";
|
|
86744
|
+
if (resContentType.includes("application/json")) {
|
|
86745
|
+
try {
|
|
86746
|
+
data = text ? JSON.parse(text) : null;
|
|
86747
|
+
} catch {
|
|
86748
|
+
data = { raw: text };
|
|
86749
|
+
}
|
|
86750
|
+
} else {
|
|
86751
|
+
data = text;
|
|
86752
|
+
}
|
|
86753
|
+
if (!response.ok) {
|
|
86754
|
+
let errorMessage = `HTTP ${response.status} ${response.statusText}`;
|
|
86755
|
+
if (data && typeof data === "object" && !Array.isArray(data) && typeof data.message === "string") {
|
|
86756
|
+
errorMessage = data.message;
|
|
86757
|
+
} else if (typeof data === "string" && data) {
|
|
86758
|
+
errorMessage = data;
|
|
86759
|
+
}
|
|
86760
|
+
return { success: false, error: errorMessage };
|
|
86761
|
+
}
|
|
86762
|
+
return { success: true, status: response.status, data };
|
|
86763
|
+
} finally {
|
|
86764
|
+
clearTimeout(timeout);
|
|
86765
|
+
}
|
|
86766
|
+
} catch (err) {
|
|
86767
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
86768
|
+
return { success: false, error: msg };
|
|
86769
|
+
}
|
|
86770
|
+
}
|
|
86771
|
+
});
|
|
86772
|
+
|
|
86773
|
+
// ../connectors/src/connectors/influxdb/index.ts
|
|
86774
|
+
var tools63 = { request: requestTool48 };
|
|
86775
|
+
var influxdbConnector = new ConnectorPlugin({
|
|
86776
|
+
slug: "influxdb",
|
|
86777
|
+
authType: AUTH_TYPES.API_KEY,
|
|
86778
|
+
name: "InfluxDB",
|
|
86779
|
+
description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
|
|
86780
|
+
iconUrl: "https://upload.wikimedia.org/wikipedia/commons/b/b2/Influxdb_logo.svg",
|
|
86781
|
+
parameters: parameters63,
|
|
86782
|
+
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
86783
|
+
onboarding: influxdbOnboarding,
|
|
86784
|
+
systemPrompt: {
|
|
86785
|
+
en: `### Tools
|
|
86786
|
+
|
|
86787
|
+
- \`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\`.
|
|
86788
|
+
|
|
86789
|
+
### Business Logic
|
|
86790
|
+
|
|
86791
|
+
The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
|
|
86792
|
+
|
|
86793
|
+
SDK methods (client created via \`connection(connectionId)\`):
|
|
86794
|
+
- \`client.request(path, init?)\` \u2014 low-level authenticated fetch against the InfluxDB base URL
|
|
86795
|
+
- \`client.querySql<T>(sql, options?)\` \u2014 InfluxDB 3 SQL query; returns an array of row objects, defaults \`db\` to the configured database
|
|
86796
|
+
- \`client.queryInfluxql<T>(influxql, options?)\` \u2014 InfluxDB 3 InfluxQL query; same shape as \`querySql\`
|
|
86797
|
+
- \`client.queryFlux(flux, options?)\` \u2014 InfluxDB 2 Flux query; returns raw annotated CSV (parse as needed)
|
|
86798
|
+
- \`client.writeLineProtocol(lineProtocol, options?)\` \u2014 append-only write; uses v3 or v2 endpoint depending on whether \`org\` is configured
|
|
86799
|
+
- \`client.database\` / \`client.org\` \u2014 connection-level defaults
|
|
86800
|
+
|
|
86801
|
+
\`\`\`ts
|
|
86802
|
+
import type { Context } from "hono";
|
|
86803
|
+
import { connection } from "@squadbase/vite-server/connectors/influxdb";
|
|
86804
|
+
|
|
86805
|
+
const influx = connection("<connectionId>");
|
|
86806
|
+
|
|
86807
|
+
export default async function handler(c: Context) {
|
|
86808
|
+
const { measurement = "cpu", limit = 60 } = await c.req.json<{
|
|
86809
|
+
measurement?: string;
|
|
86810
|
+
limit?: number;
|
|
86811
|
+
}>();
|
|
86812
|
+
|
|
86813
|
+
const rows = await influx.querySql<{
|
|
86814
|
+
time: string;
|
|
86815
|
+
usage_user: number;
|
|
86816
|
+
host: string;
|
|
86817
|
+
}>(
|
|
86818
|
+
\`SELECT time, usage_user, host FROM \${measurement} ORDER BY time DESC LIMIT \${limit}\`,
|
|
86819
|
+
);
|
|
86820
|
+
|
|
86821
|
+
return c.json({ series: rows });
|
|
86822
|
+
}
|
|
86823
|
+
\`\`\`
|
|
86824
|
+
|
|
86825
|
+
### InfluxDB HTTP API Reference
|
|
86826
|
+
|
|
86827
|
+
- Base URL: the \`url\` parameter (e.g., \`https://us-east-1-1.aws.cloud2.influxdata.com\`)
|
|
86828
|
+
- Authentication: \`Authorization: Token {token}\` (handled automatically)
|
|
86829
|
+
- Response content types: \`application/json\` for SQL/InfluxQL, annotated CSV for Flux
|
|
86830
|
+
|
|
86831
|
+
#### InfluxDB 3 Endpoints
|
|
86832
|
+
- POST \`/api/v3/query_sql\` \u2014 Body: \`{ "db": "<database>", "q": "<sql>" }\` \u2192 JSON rows
|
|
86833
|
+
- POST \`/api/v3/query_influxql\` \u2014 Body: \`{ "db": "<database>", "q": "<influxql>" }\` \u2192 JSON rows
|
|
86834
|
+
- POST \`/api/v3/write_lp?db=<database>&precision=ns\` \u2014 Body: raw line protocol
|
|
86835
|
+
- GET \`/api/v3/configure/database\` \u2014 List databases
|
|
86836
|
+
|
|
86837
|
+
#### InfluxDB 2 Endpoints
|
|
86838
|
+
- POST \`/api/v2/query?org=<org>\` \u2014 Body: Flux script (Content-Type: \`application/vnd.flux\`) \u2192 annotated CSV
|
|
86839
|
+
- POST \`/api/v2/write?org=<org>&bucket=<bucket>&precision=ns\` \u2014 Body: raw line protocol
|
|
86840
|
+
- GET \`/api/v2/buckets?org=<org>\` \u2014 List buckets
|
|
86841
|
+
- GET \`/api/v2/orgs\` \u2014 List organizations
|
|
86842
|
+
|
|
86843
|
+
#### SQL Reference (InfluxDB 3)
|
|
86844
|
+
- \`SELECT field_list FROM measurement WHERE time >= now() - INTERVAL '1 hour' AND tag = 'x' ORDER BY time DESC LIMIT 100\`
|
|
86845
|
+
- Time filtering uses standard SQL \`time\` column comparisons (\`time >= now() - INTERVAL '...' \`)
|
|
86846
|
+
- Aggregates: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`; bucket time with \`date_bin('5 minutes', time)\`
|
|
86847
|
+
- List measurements: \`SHOW TABLES\`; list columns: \`SHOW COLUMNS FROM <measurement>\``,
|
|
86848
|
+
ja: `### \u30C4\u30FC\u30EB
|
|
86849
|
+
|
|
86850
|
+
- \`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
|
|
86851
|
+
|
|
86852
|
+
### Business Logic
|
|
86853
|
+
|
|
86854
|
+
\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
|
|
86855
|
+
|
|
86856
|
+
SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
|
|
86857
|
+
- \`client.request(path, init?)\` \u2014 InfluxDB \u30D9\u30FC\u30B9 URL \u306B\u5BFE\u3059\u308B\u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304D fetch
|
|
86858
|
+
- \`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
|
|
86859
|
+
- \`client.queryInfluxql<T>(influxql, options?)\` \u2014 InfluxDB 3 \u306E InfluxQL \u30AF\u30A8\u30EA\uFF08\`querySql\` \u3068\u540C\u3058\u5F62\u5F0F\uFF09
|
|
86860
|
+
- \`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
|
|
86861
|
+
- \`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
|
|
86862
|
+
- \`client.database\` / \`client.org\` \u2014 \u63A5\u7D9A\u5358\u4F4D\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024
|
|
86863
|
+
|
|
86864
|
+
\`\`\`ts
|
|
86865
|
+
import type { Context } from "hono";
|
|
86866
|
+
import { connection } from "@squadbase/vite-server/connectors/influxdb";
|
|
86867
|
+
|
|
86868
|
+
const influx = connection("<connectionId>");
|
|
86869
|
+
|
|
86870
|
+
export default async function handler(c: Context) {
|
|
86871
|
+
const { measurement = "cpu", limit = 60 } = await c.req.json<{
|
|
86872
|
+
measurement?: string;
|
|
86873
|
+
limit?: number;
|
|
86874
|
+
}>();
|
|
86875
|
+
|
|
86876
|
+
const rows = await influx.querySql<{
|
|
86877
|
+
time: string;
|
|
86878
|
+
usage_user: number;
|
|
86879
|
+
host: string;
|
|
86880
|
+
}>(
|
|
86881
|
+
\`SELECT time, usage_user, host FROM \${measurement} ORDER BY time DESC LIMIT \${limit}\`,
|
|
86882
|
+
);
|
|
86883
|
+
|
|
86884
|
+
return c.json({ series: rows });
|
|
86885
|
+
}
|
|
86886
|
+
\`\`\`
|
|
86887
|
+
|
|
86888
|
+
### InfluxDB HTTP API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
|
|
86889
|
+
|
|
86890
|
+
- \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
|
|
86891
|
+
- \u8A8D\u8A3C: \`Authorization: Token {token}\`\uFF08\u81EA\u52D5\u8A2D\u5B9A\uFF09
|
|
86892
|
+
- \u30EC\u30B9\u30DD\u30F3\u30B9\u5F62\u5F0F: SQL/InfluxQL \u306F JSON\u3001Flux \u306F\u6CE8\u91C8\u4ED8\u304D CSV
|
|
86893
|
+
|
|
86894
|
+
#### InfluxDB 3 \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
|
|
86895
|
+
- POST \`/api/v3/query_sql\` \u2014 Body: \`{ "db": "<database>", "q": "<sql>" }\` \u2192 JSON \u884C
|
|
86896
|
+
- POST \`/api/v3/query_influxql\` \u2014 Body: \`{ "db": "<database>", "q": "<influxql>" }\` \u2192 JSON \u884C
|
|
86897
|
+
- POST \`/api/v3/write_lp?db=<database>&precision=ns\` \u2014 Body: line protocol \u751F\u6587\u5B57\u5217
|
|
86898
|
+
- GET \`/api/v3/configure/database\` \u2014 database \u4E00\u89A7
|
|
86899
|
+
|
|
86900
|
+
#### InfluxDB 2 \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
|
|
86901
|
+
- 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
|
|
86902
|
+
- POST \`/api/v2/write?org=<org>&bucket=<bucket>&precision=ns\` \u2014 Body: line protocol \u751F\u6587\u5B57\u5217
|
|
86903
|
+
- GET \`/api/v2/buckets?org=<org>\` \u2014 bucket \u4E00\u89A7
|
|
86904
|
+
- GET \`/api/v2/orgs\` \u2014 organization \u4E00\u89A7
|
|
86905
|
+
|
|
86906
|
+
#### SQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 (InfluxDB 3)
|
|
86907
|
+
- \`SELECT field_list FROM measurement WHERE time >= now() - INTERVAL '1 hour' AND tag = 'x' ORDER BY time DESC LIMIT 100\`
|
|
86908
|
+
- \u6642\u523B\u30D5\u30A3\u30EB\u30BF\u306F\u6A19\u6E96 SQL \u306E \`time\` \u5217\u6BD4\u8F03\uFF08\`time >= now() - INTERVAL '...'\`\uFF09
|
|
86909
|
+
- \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
|
|
86910
|
+
- measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
|
|
86911
|
+
},
|
|
86912
|
+
tools: tools63
|
|
86913
|
+
});
|
|
86914
|
+
|
|
86356
86915
|
// ../connectors/src/connectors/registry.ts
|
|
86357
86916
|
var plugins = {
|
|
86358
86917
|
snowflake: snowflakeConnector,
|
|
@@ -86415,7 +86974,9 @@ var plugins = {
|
|
|
86415
86974
|
grafana: grafanaConnector,
|
|
86416
86975
|
backlog: backlogConnector,
|
|
86417
86976
|
gamma: gammaConnector,
|
|
86418
|
-
sentry: sentryConnector
|
|
86977
|
+
sentry: sentryConnector,
|
|
86978
|
+
salesforce: salesforceConnector,
|
|
86979
|
+
influxdb: influxdbConnector
|
|
86419
86980
|
};
|
|
86420
86981
|
var connectors = {
|
|
86421
86982
|
...plugins,
|
|
@@ -86642,62 +87203,62 @@ import { watch as fsWatch2 } from "fs";
|
|
|
86642
87203
|
import path2 from "path";
|
|
86643
87204
|
|
|
86644
87205
|
// src/types/server-logic.ts
|
|
86645
|
-
import { z as
|
|
86646
|
-
var parameterMetaSchema =
|
|
86647
|
-
name:
|
|
86648
|
-
type:
|
|
86649
|
-
description:
|
|
86650
|
-
required:
|
|
86651
|
-
default:
|
|
86652
|
-
});
|
|
86653
|
-
var serverLogicCacheConfigSchema =
|
|
86654
|
-
ttl:
|
|
86655
|
-
staleWhileRevalidate:
|
|
86656
|
-
});
|
|
86657
|
-
var serverLogicSchemaObjectSchema =
|
|
86658
|
-
() =>
|
|
86659
|
-
type:
|
|
86660
|
-
format:
|
|
86661
|
-
description:
|
|
86662
|
-
nullable:
|
|
86663
|
-
enum:
|
|
87206
|
+
import { z as z79 } from "zod";
|
|
87207
|
+
var parameterMetaSchema = z79.object({
|
|
87208
|
+
name: z79.string(),
|
|
87209
|
+
type: z79.enum(["string", "number", "boolean"]),
|
|
87210
|
+
description: z79.string(),
|
|
87211
|
+
required: z79.boolean().optional(),
|
|
87212
|
+
default: z79.union([z79.string(), z79.number(), z79.boolean()]).optional()
|
|
87213
|
+
});
|
|
87214
|
+
var serverLogicCacheConfigSchema = z79.object({
|
|
87215
|
+
ttl: z79.number(),
|
|
87216
|
+
staleWhileRevalidate: z79.boolean().optional()
|
|
87217
|
+
});
|
|
87218
|
+
var serverLogicSchemaObjectSchema = z79.lazy(
|
|
87219
|
+
() => z79.object({
|
|
87220
|
+
type: z79.enum(["string", "number", "integer", "boolean", "object", "array", "null"]).optional(),
|
|
87221
|
+
format: z79.string().optional(),
|
|
87222
|
+
description: z79.string().optional(),
|
|
87223
|
+
nullable: z79.boolean().optional(),
|
|
87224
|
+
enum: z79.array(z79.union([z79.string(), z79.number(), z79.boolean(), z79.null()])).optional(),
|
|
86664
87225
|
items: serverLogicSchemaObjectSchema.optional(),
|
|
86665
|
-
properties:
|
|
86666
|
-
required:
|
|
86667
|
-
additionalProperties:
|
|
86668
|
-
minimum:
|
|
86669
|
-
maximum:
|
|
86670
|
-
minLength:
|
|
86671
|
-
maxLength:
|
|
86672
|
-
pattern:
|
|
87226
|
+
properties: z79.record(z79.string(), serverLogicSchemaObjectSchema).optional(),
|
|
87227
|
+
required: z79.array(z79.string()).optional(),
|
|
87228
|
+
additionalProperties: z79.union([z79.boolean(), serverLogicSchemaObjectSchema]).optional(),
|
|
87229
|
+
minimum: z79.number().optional(),
|
|
87230
|
+
maximum: z79.number().optional(),
|
|
87231
|
+
minLength: z79.number().optional(),
|
|
87232
|
+
maxLength: z79.number().optional(),
|
|
87233
|
+
pattern: z79.string().optional()
|
|
86673
87234
|
})
|
|
86674
87235
|
);
|
|
86675
|
-
var serverLogicMediaTypeSchema =
|
|
87236
|
+
var serverLogicMediaTypeSchema = z79.object({
|
|
86676
87237
|
schema: serverLogicSchemaObjectSchema.optional(),
|
|
86677
|
-
example:
|
|
87238
|
+
example: z79.unknown().optional()
|
|
86678
87239
|
});
|
|
86679
|
-
var serverLogicResponseSchema =
|
|
86680
|
-
description:
|
|
86681
|
-
content:
|
|
87240
|
+
var serverLogicResponseSchema = z79.object({
|
|
87241
|
+
description: z79.string().optional(),
|
|
87242
|
+
content: z79.record(z79.string(), serverLogicMediaTypeSchema).optional()
|
|
86682
87243
|
});
|
|
86683
87244
|
var jsonBaseFields = {
|
|
86684
|
-
description:
|
|
86685
|
-
parameters:
|
|
87245
|
+
description: z79.string(),
|
|
87246
|
+
parameters: z79.array(parameterMetaSchema).optional(),
|
|
86686
87247
|
response: serverLogicResponseSchema.optional(),
|
|
86687
87248
|
cache: serverLogicCacheConfigSchema.optional()
|
|
86688
87249
|
};
|
|
86689
|
-
var jsonSqlServerLogicSchema =
|
|
87250
|
+
var jsonSqlServerLogicSchema = z79.object({
|
|
86690
87251
|
...jsonBaseFields,
|
|
86691
|
-
type:
|
|
86692
|
-
query:
|
|
86693
|
-
connectionId:
|
|
87252
|
+
type: z79.literal("sql").optional(),
|
|
87253
|
+
query: z79.string(),
|
|
87254
|
+
connectionId: z79.string()
|
|
86694
87255
|
});
|
|
86695
|
-
var jsonTypeScriptServerLogicSchema =
|
|
87256
|
+
var jsonTypeScriptServerLogicSchema = z79.object({
|
|
86696
87257
|
...jsonBaseFields,
|
|
86697
|
-
type:
|
|
86698
|
-
handlerPath:
|
|
87258
|
+
type: z79.literal("typescript"),
|
|
87259
|
+
handlerPath: z79.string()
|
|
86699
87260
|
});
|
|
86700
|
-
var anyJsonServerLogicSchema =
|
|
87261
|
+
var anyJsonServerLogicSchema = z79.union([
|
|
86701
87262
|
jsonTypeScriptServerLogicSchema,
|
|
86702
87263
|
jsonSqlServerLogicSchema
|
|
86703
87264
|
]);
|