@squadbase/vite-server 0.1.5-dev.1 → 0.1.7-dev.0
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 +255 -147
- package/dist/connectors/google-sheets.js +169 -145
- package/dist/connectors/influxdb.js +119 -29
- package/dist/connectors/sentry.js +1 -1
- package/dist/connectors/shopify.js +2 -0
- package/dist/index.js +255 -147
- package/dist/main.js +255 -147
- package/dist/vite-plugin.js +255 -147
- package/package.json +1 -1
package/dist/vite-plugin.js
CHANGED
|
@@ -72670,21 +72670,23 @@ await drive.updateFile("fileId123", {}, "newFolderId", "oldFolderId");
|
|
|
72670
72670
|
}
|
|
72671
72671
|
});
|
|
72672
72672
|
|
|
72673
|
-
// ../connectors/src/connectors/google-sheets/
|
|
72674
|
-
|
|
72675
|
-
dataOverviewInstructions: {
|
|
72676
|
-
en: `1. Create a new spreadsheet with google-sheets-oauth_request (POST with body { properties: { title: "..." } }) or use an existing spreadsheet ID.
|
|
72677
|
-
2. Call google-sheets-oauth_request with GET /{spreadsheetId} to fetch spreadsheet metadata (sheet names and properties).`,
|
|
72678
|
-
ja: `1. google-sheets-oauth_request \u3092 POST\uFF08Body: { properties: { title: "..." } }\uFF09\u3067\u547C\u3073\u51FA\u3057\u3066\u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210\u3059\u308B\u304B\u3001\u65E2\u5B58\u306E\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u3092\u5229\u7528\u3057\u307E\u3059\u3002
|
|
72679
|
-
2. google-sheets-oauth_request \u3067 GET /{spreadsheetId} \u3092\u547C\u3073\u51FA\u3057\u3001\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\uFF08\u30B7\u30FC\u30C8\u540D\u3068\u30D7\u30ED\u30D1\u30C6\u30A3\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002`
|
|
72680
|
-
}
|
|
72681
|
-
});
|
|
72673
|
+
// ../connectors/src/connectors/google-sheets/tools/request.ts
|
|
72674
|
+
import { z as z27 } from "zod";
|
|
72682
72675
|
|
|
72683
72676
|
// ../connectors/src/connectors/google-sheets/parameters.ts
|
|
72684
|
-
var parameters18 = {
|
|
72677
|
+
var parameters18 = {
|
|
72678
|
+
spreadsheetId: new ParameterDefinition({
|
|
72679
|
+
slug: "spreadsheet-id",
|
|
72680
|
+
name: "Google Sheets Spreadsheet ID",
|
|
72681
|
+
description: "The spreadsheet ID from the Google Sheets URL (the segment between /d/ and /edit in https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit).",
|
|
72682
|
+
envVarBaseKey: "GOOGLE_SHEETS_SPREADSHEET_ID",
|
|
72683
|
+
type: "text",
|
|
72684
|
+
secret: false,
|
|
72685
|
+
required: true
|
|
72686
|
+
})
|
|
72687
|
+
};
|
|
72685
72688
|
|
|
72686
72689
|
// ../connectors/src/connectors/google-sheets/tools/request.ts
|
|
72687
|
-
import { z as z27 } from "zod";
|
|
72688
72690
|
var SHEETS_BASE_URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
|
72689
72691
|
var REQUEST_TIMEOUT_MS17 = 6e4;
|
|
72690
72692
|
var cachedToken13 = null;
|
|
@@ -72723,11 +72725,10 @@ var inputSchema27 = z27.object({
|
|
|
72723
72725
|
"Brief description of what you intend to accomplish with this tool call"
|
|
72724
72726
|
),
|
|
72725
72727
|
connectionId: z27.string().describe("ID of the Google Sheets connection to use"),
|
|
72726
|
-
method: z27.enum(["GET"
|
|
72728
|
+
method: z27.enum(["GET"]).describe("HTTP method. Only GET is supported (read-only analysis)."),
|
|
72727
72729
|
path: z27.string().describe(
|
|
72728
|
-
"API path appended to https://sheets.googleapis.com/v4/spreadsheets (e.g., '
|
|
72730
|
+
"API path appended to https://sheets.googleapis.com/v4/spreadsheets (e.g., '/{spreadsheetId}', '/{spreadsheetId}/values/Sheet1!A1:D10'). The `{spreadsheetId}` placeholder is automatically replaced with the connection's configured spreadsheet ID."
|
|
72729
72731
|
),
|
|
72730
|
-
body: z27.record(z27.string(), z27.unknown()).optional().describe("JSON request body for POST/PUT requests"),
|
|
72731
72732
|
queryParams: z27.record(z27.string(), z27.string()).optional().describe("Query parameters to append to the URL")
|
|
72732
72733
|
});
|
|
72733
72734
|
var outputSchema27 = z27.discriminatedUnion("success", [
|
|
@@ -72743,12 +72744,12 @@ var outputSchema27 = z27.discriminatedUnion("success", [
|
|
|
72743
72744
|
]);
|
|
72744
72745
|
var requestTool9 = new ConnectorTool({
|
|
72745
72746
|
name: "request",
|
|
72746
|
-
description: `Send authenticated requests to the Google Sheets API v4.
|
|
72747
|
-
|
|
72747
|
+
description: `Send authenticated GET requests to the Google Sheets API v4 for read-only analysis.
|
|
72748
|
+
The \`{spreadsheetId}\` placeholder in the path is automatically replaced with the connection's configured spreadsheet ID.
|
|
72748
72749
|
Authentication is handled automatically via OAuth proxy.`,
|
|
72749
72750
|
inputSchema: inputSchema27,
|
|
72750
72751
|
outputSchema: outputSchema27,
|
|
72751
|
-
async execute({ connectionId, method, path: path4,
|
|
72752
|
+
async execute({ connectionId, method, path: path4, queryParams }, connections, config) {
|
|
72752
72753
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
72753
72754
|
if (!connection) {
|
|
72754
72755
|
return {
|
|
@@ -72756,11 +72757,16 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
72756
72757
|
error: `Connection ${connectionId} not found`
|
|
72757
72758
|
};
|
|
72758
72759
|
}
|
|
72760
|
+
const spreadsheetIdParam = connection.parameters.find(
|
|
72761
|
+
(p6) => p6.parameterSlug === parameters18.spreadsheetId.slug
|
|
72762
|
+
);
|
|
72763
|
+
const spreadsheetId = spreadsheetIdParam?.value ?? void 0;
|
|
72764
|
+
const resolvedPath = spreadsheetId ? path4.replace(/\{spreadsheetId\}/g, spreadsheetId) : path4;
|
|
72759
72765
|
console.log(
|
|
72760
|
-
`[connector-request] google-sheets/${connection.name}: ${method} ${
|
|
72766
|
+
`[connector-request] google-sheets/${connection.name}: ${method} ${resolvedPath}`
|
|
72761
72767
|
);
|
|
72762
72768
|
try {
|
|
72763
|
-
let url = `${SHEETS_BASE_URL}${
|
|
72769
|
+
let url = `${SHEETS_BASE_URL}${resolvedPath === "" || resolvedPath.startsWith("/") ? "" : "/"}${resolvedPath}`;
|
|
72764
72770
|
if (queryParams) {
|
|
72765
72771
|
const searchParams = new URLSearchParams(queryParams);
|
|
72766
72772
|
url += `?${searchParams.toString()}`;
|
|
@@ -72778,8 +72784,7 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
72778
72784
|
},
|
|
72779
72785
|
body: JSON.stringify({
|
|
72780
72786
|
url,
|
|
72781
|
-
method
|
|
72782
|
-
...body != null ? { body: JSON.stringify(body) } : {}
|
|
72787
|
+
method
|
|
72783
72788
|
}),
|
|
72784
72789
|
signal: controller.signal
|
|
72785
72790
|
});
|
|
@@ -72799,13 +72804,66 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
72799
72804
|
}
|
|
72800
72805
|
});
|
|
72801
72806
|
|
|
72807
|
+
// ../connectors/src/connectors/google-sheets/setup.ts
|
|
72808
|
+
var requestToolName = `google-sheets-oauth_${requestTool9.name}`;
|
|
72809
|
+
var googleSheetsOnboarding = new ConnectorOnboarding({
|
|
72810
|
+
connectionSetupInstructions: {
|
|
72811
|
+
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Google Sheets (OAuth) \u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u5206\u6790\u5BFE\u8C61\u306E\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306F\u30E6\u30FC\u30B6\u30FC\u304B\u3089\u53D7\u3051\u53D6\u3063\u305FURL\u3067\u6307\u5B9A\u3057\u307E\u3059\uFF08\u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306F\u4F5C\u6210\u3057\u307E\u305B\u3093\uFF09\u3002
|
|
72812
|
+
|
|
72813
|
+
1. \`askUserQuestion\` \u3067\u5206\u6790\u5BFE\u8C61\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306EURL\u3092\u30D2\u30A2\u30EA\u30F3\u30B0\u3059\u308B:
|
|
72814
|
+
- \`type\`: \`"freeText"\`
|
|
72815
|
+
- \`question\`: \u300C\u5206\u6790\u3057\u305F\u3044Google Sheets\u306EURL\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u300D
|
|
72816
|
+
- \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
|
|
72817
|
+
2. \u53D7\u3051\u53D6\u3063\u305FURL\u304B\u3089\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u3092\u62BD\u51FA\u3059\u308B\u3002URL\u306E \`/d/\` \u3068 \`/edit\`\uFF08\u307E\u305F\u306F\u672B\u5C3E\uFF09\u306E\u9593\u306B\u3042\u308B\u6587\u5B57\u5217\u304C\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u3067\u3059\uFF08\u4F8B: \`https://docs.google.com/spreadsheets/d/1AbCxyz.../edit\` \u2192 \`1AbCxyz...\`\uFF09\u3002URL\u3067\u306F\u306A\u304FID\u3060\u3051\u304C\u6E21\u3055\u308C\u305F\u5834\u5408\u306F\u305D\u306E\u307E\u307E\u5229\u7528\u3057\u307E\u3059\u3002
|
|
72818
|
+
3. \u62BD\u51FA\u3057\u305FID\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
|
|
72819
|
+
- \`parameterSlug\`: \`"spreadsheet-id"\`
|
|
72820
|
+
- \`options\`: \`[{ value: <\u62BD\u51FA\u3057\u305FID>, label: <\u540C\u3058\u5024> }]\`\uFF081\u4EF6\u306E\u307F\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u81EA\u52D5\u9078\u629E\u3055\u308C\u308B\uFF09
|
|
72821
|
+
4. \`${requestToolName}\` \u3067\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3059\u308B:
|
|
72822
|
+
- \`method\`: \`"GET"\`
|
|
72823
|
+
- \`path\`: \`"/{spreadsheetId}"\`
|
|
72824
|
+
5. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u4EE5\u4E0B\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u30E6\u30FC\u30B6\u30FC\u306B\u4F1D\u3048\u308B:
|
|
72825
|
+
- OAuth\u3067\u63A5\u7D9A\u3057\u305FGoogle\u30A2\u30AB\u30A6\u30F3\u30C8\u304C\u305D\u306E\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306B\u95B2\u89A7\u6A29\u9650\u3092\u6301\u3063\u3066\u3044\u308B\u304B
|
|
72826
|
+
- \u5165\u529B\u3055\u308C\u305FURL\u304C\u6B63\u3057\u3044\u304B
|
|
72827
|
+
|
|
72828
|
+
#### \u5236\u7D04
|
|
72829
|
+
- **\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u30BB\u30EB\u5024\u3092\u5927\u91CF\u306B\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
|
|
72830
|
+
- \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
|
|
72831
|
+
en: `Follow these steps to set up the Google Sheets (OAuth) connection. The spreadsheet to analyze is specified by the URL provided by the user (no new spreadsheet is created).
|
|
72832
|
+
|
|
72833
|
+
1. Call \`askUserQuestion\` to ask for the spreadsheet URL to analyze:
|
|
72834
|
+
- \`type\`: \`"freeText"\`
|
|
72835
|
+
- \`question\`: "Please paste the URL of the Google Sheet you want to analyze"
|
|
72836
|
+
- \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
|
|
72837
|
+
2. Extract the spreadsheet ID from the URL. It is the segment between \`/d/\` and \`/edit\` (or the end of the URL), e.g. \`https://docs.google.com/spreadsheets/d/1AbCxyz.../edit\` \u2192 \`1AbCxyz...\`. If the user pasted just the ID, use it as-is.
|
|
72838
|
+
3. Save the extracted ID via \`updateConnectionParameters\`:
|
|
72839
|
+
- \`parameterSlug\`: \`"spreadsheet-id"\`
|
|
72840
|
+
- \`options\`: \`[{ value: <extracted ID>, label: <same value> }]\` (a single option is auto-selected)
|
|
72841
|
+
4. Verify access by calling \`${requestToolName}\`:
|
|
72842
|
+
- \`method\`: \`"GET"\`
|
|
72843
|
+
- \`path\`: \`"/{spreadsheetId}"\`
|
|
72844
|
+
5. If an error is returned, ask the user to verify:
|
|
72845
|
+
- The OAuthed Google account has read access to the spreadsheet
|
|
72846
|
+
- The URL they entered is correct
|
|
72847
|
+
|
|
72848
|
+
#### Constraints
|
|
72849
|
+
- **Do NOT read large amounts of cell data during setup**. Only the metadata request specified above is allowed
|
|
72850
|
+
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
|
|
72851
|
+
},
|
|
72852
|
+
dataOverviewInstructions: {
|
|
72853
|
+
en: `1. Call ${requestToolName} with GET /{spreadsheetId} to fetch spreadsheet metadata (sheet names, grid properties)
|
|
72854
|
+
2. For each sheet of interest, call ${requestToolName} with GET /{spreadsheetId}/values/{SheetName}!A1:Z5 to sample the first rows and understand the column layout`,
|
|
72855
|
+
ja: `1. ${requestToolName} \u3067 GET /{spreadsheetId} \u3092\u547C\u3073\u51FA\u3057\u3001\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\uFF08\u30B7\u30FC\u30C8\u540D\u3001\u30B0\u30EA\u30C3\u30C9\u30D7\u30ED\u30D1\u30C6\u30A3\uFF09\u3092\u53D6\u5F97
|
|
72856
|
+
2. \u4E3B\u8981\u306A\u30B7\u30FC\u30C8\u306B\u3064\u3044\u3066 ${requestToolName} \u3067 GET /{spreadsheetId}/values/{\u30B7\u30FC\u30C8\u540D}!A1:Z5 \u3092\u547C\u3073\u51FA\u3057\u3001\u5148\u982D\u6570\u884C\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3057\u3066\u30AB\u30E9\u30E0\u69CB\u9020\u3092\u628A\u63E1`
|
|
72857
|
+
}
|
|
72858
|
+
});
|
|
72859
|
+
|
|
72802
72860
|
// ../connectors/src/connectors/google-sheets/index.ts
|
|
72803
72861
|
var tools18 = { request: requestTool9 };
|
|
72804
72862
|
var googleSheetsConnector = new ConnectorPlugin({
|
|
72805
72863
|
slug: "google-sheets",
|
|
72806
72864
|
authType: AUTH_TYPES.OAUTH,
|
|
72807
72865
|
name: "Google Sheets",
|
|
72808
|
-
description: "Connect to Google Sheets for
|
|
72866
|
+
description: "Connect to an existing Google Sheets spreadsheet for read-only data analysis using OAuth.",
|
|
72809
72867
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1UPQuggyiZmbb26CuaSr2h/032770e8739b183fa00b7625f024e536/google-sheets.svg",
|
|
72810
72868
|
parameters: parameters18,
|
|
72811
72869
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
@@ -72814,30 +72872,25 @@ var googleSheetsConnector = new ConnectorPlugin({
|
|
|
72814
72872
|
allowlist: [
|
|
72815
72873
|
{
|
|
72816
72874
|
host: "sheets.googleapis.com",
|
|
72817
|
-
methods: ["GET"
|
|
72875
|
+
methods: ["GET"]
|
|
72818
72876
|
}
|
|
72819
72877
|
]
|
|
72820
72878
|
},
|
|
72821
72879
|
systemPrompt: {
|
|
72822
72880
|
en: `### Tools (setup-time only)
|
|
72823
72881
|
|
|
72824
|
-
- \`google-sheets-oauth_request\`: Call the Google Sheets API during setup / data overview.
|
|
72882
|
+
- \`google-sheets-oauth_request\`: Call the Google Sheets API during setup / data overview. Read-only (GET only). Use it to fetch spreadsheet metadata and sample cell values. The \`{spreadsheetId}\` placeholder in the path is automatically replaced with the spreadsheet configured at setup time. Authentication is configured automatically via OAuth.
|
|
72825
72883
|
|
|
72826
72884
|
> **Important**: The \`google-sheets-oauth_request\` tool is only available at setup time. Inside server-logic handlers, use the SDK (\`connection(id).getValues\`, etc.) \u2014 the SDK's fetch is already wired through the OAuth proxy. **Do NOT** hand-roll HTTP calls to \`_sqcore/connections/*/request\` from a handler.
|
|
72827
72885
|
|
|
72828
|
-
|
|
72886
|
+
> **Connection scope**: Each connection is bound to a single spreadsheet selected at setup time via URL. This connector does NOT create new spreadsheets and does NOT write to spreadsheets. The OAuth scope is \`spreadsheets.readonly\`.
|
|
72887
|
+
|
|
72888
|
+
### Google Sheets API Reference (read-only)
|
|
72829
72889
|
|
|
72830
|
-
#### Read Endpoints
|
|
72831
72890
|
- GET \`/{spreadsheetId}\` \u2014 Get spreadsheet metadata (title, sheets, properties)
|
|
72832
72891
|
- GET \`/{spreadsheetId}/values/{range}\` \u2014 Get cell values for a range
|
|
72833
72892
|
- GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 Get values for multiple ranges
|
|
72834
72893
|
|
|
72835
|
-
#### Write Endpoints
|
|
72836
|
-
- POST \`\` (empty path, with body) \u2014 Create a new spreadsheet. Body: \`{ "properties": { "title": "My Sheet" }, "sheets": [{ "properties": { "title": "Sheet1" } }] }\`
|
|
72837
|
-
- PUT \`/{spreadsheetId}/values/{range}?valueInputOption=USER_ENTERED\` \u2014 Update cell values for a range. Body: \`{ "range": "Sheet1!A1:B2", "majorDimension": "ROWS", "values": [["a","b"],["c","d"]] }\`
|
|
72838
|
-
- POST \`/{spreadsheetId}/values/{range}:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS\` \u2014 Append rows after the last row. Body: \`{ "range": "Sheet1!A1", "majorDimension": "ROWS", "values": [["a","b"]] }\`
|
|
72839
|
-
- POST \`/{spreadsheetId}:batchUpdate\` \u2014 Apply multiple updates (formatting, add sheets, merge cells, etc.). Body: \`{ "requests": [...] }\`
|
|
72840
|
-
|
|
72841
72894
|
### Range Notation (A1 notation)
|
|
72842
72895
|
- \`Sheet1!A1:D10\` \u2014 Specific range on Sheet1
|
|
72843
72896
|
- \`Sheet1!A:A\` \u2014 Entire column A on Sheet1
|
|
@@ -72850,21 +72903,17 @@ var googleSheetsConnector = new ConnectorPlugin({
|
|
|
72850
72903
|
- Use \`valueRenderOption=FORMATTED_VALUE\` query param to get display values
|
|
72851
72904
|
- Use \`valueRenderOption=UNFORMATTED_VALUE\` for raw numeric values
|
|
72852
72905
|
- Use \`majorDimension=COLUMNS\` to get data organized by columns instead of rows
|
|
72853
|
-
- For write operations, always use \`valueInputOption=USER_ENTERED\` so values are parsed as if typed by a user (dates, numbers, formulas are auto-detected)
|
|
72854
|
-
- Sharing (permissions) cannot be done via this connector; only the OAuth user has access to the created spreadsheets
|
|
72855
72906
|
|
|
72856
72907
|
### Business Logic
|
|
72857
72908
|
|
|
72858
|
-
The business logic type for this connector is "typescript". Write handler code using the connector SDK shown below. Do NOT access credentials directly from environment variables and do NOT read \`INTERNAL_SQUADBASE_*\` env vars \u2014 the SDK takes care of OAuth.
|
|
72909
|
+
The business logic type for this connector is "typescript". Write handler code using the connector SDK shown below. Do NOT access credentials directly from environment variables and do NOT read \`INTERNAL_SQUADBASE_*\` env vars \u2014 the SDK takes care of OAuth. The spreadsheet ID is bound to the connection at setup time; do NOT ask handler callers to pass it.
|
|
72859
72910
|
|
|
72860
72911
|
SDK surface (client created via \`connection(connectionId)\`):
|
|
72861
|
-
- \`client.
|
|
72862
|
-
- \`client.
|
|
72863
|
-
- \`client.
|
|
72864
|
-
- \`client.
|
|
72865
|
-
- \`client.
|
|
72866
|
-
- \`client.appendValues(spreadsheetId, range, values)\` \u2014 append rows after the last row.
|
|
72867
|
-
- \`client.createSpreadsheet(title, sheetNames?)\` \u2014 create a new spreadsheet.
|
|
72912
|
+
- \`client.spreadsheetId\` \u2014 the spreadsheet ID configured for this connection.
|
|
72913
|
+
- \`client.request(path, init?)\` \u2014 low-level authenticated fetch (\`path\` is appended to \`https://sheets.googleapis.com/v4/spreadsheets\`; \`{spreadsheetId}\` is auto-replaced).
|
|
72914
|
+
- \`client.getSpreadsheet()\` \u2014 fetch spreadsheet metadata for the configured spreadsheet.
|
|
72915
|
+
- \`client.getValues(range)\` \u2014 read a range (A1 notation) from the configured spreadsheet.
|
|
72916
|
+
- \`client.batchGetValues(ranges)\` \u2014 read multiple ranges from the configured spreadsheet.
|
|
72868
72917
|
|
|
72869
72918
|
If a handler test fails with \`Connection proxy is not configured\`, retry \u2014 the sandbox is still initializing. Do NOT abandon the SDK and construct OAuth proxy URLs manually.
|
|
72870
72919
|
|
|
@@ -72875,43 +72924,31 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
|
|
|
72875
72924
|
|
|
72876
72925
|
const sheets = connection("<connectionId>");
|
|
72877
72926
|
|
|
72878
|
-
//
|
|
72879
|
-
const
|
|
72880
|
-
const spreadsheetId = newSheet.spreadsheetId;
|
|
72881
|
-
|
|
72882
|
-
// Get spreadsheet metadata
|
|
72883
|
-
const metadata = await sheets.getSpreadsheet(spreadsheetId);
|
|
72927
|
+
// Get metadata for the configured spreadsheet
|
|
72928
|
+
const metadata = await sheets.getSpreadsheet();
|
|
72884
72929
|
console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
|
|
72885
72930
|
|
|
72886
72931
|
// Get cell values
|
|
72887
|
-
const values = await sheets.getValues(
|
|
72932
|
+
const values = await sheets.getValues("Sheet1!A1:D10");
|
|
72888
72933
|
console.log(values.values); // 2D array
|
|
72889
72934
|
|
|
72890
|
-
//
|
|
72891
|
-
await sheets.
|
|
72892
|
-
|
|
72893
|
-
// Append rows
|
|
72894
|
-
await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
|
|
72935
|
+
// Batch-get multiple ranges
|
|
72936
|
+
const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
|
|
72895
72937
|
\`\`\``,
|
|
72896
72938
|
ja: `### \u30C4\u30FC\u30EB\uFF08\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306E\u307F\uFF09
|
|
72897
72939
|
|
|
72898
|
-
- \`google-sheets-oauth_request\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3084\u30C7\u30FC\u30BF\u6982\u8981\u628A\u63E1\u6642\u306B Google Sheets API \u3092\u547C\u3073\u51FA\u3059\u30C4\u30FC\u30EB\u3067\u3059\u3002\u8AAD\u307F\u53D6\u308A\
|
|
72940
|
+
- \`google-sheets-oauth_request\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3084\u30C7\u30FC\u30BF\u6982\u8981\u628A\u63E1\u6642\u306B Google Sheets API \u3092\u547C\u3073\u51FA\u3059\u30C4\u30FC\u30EB\u3067\u3059\u3002\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF08GET \u306E\u307F\uFF09\u3067\u3059\u3002\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u3084\u30BB\u30EB\u5024\u306E\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u30D1\u30B9\u5185\u306E \`{spreadsheetId}\` \u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306B\u6307\u5B9A\u3055\u308C\u305F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u306B\u81EA\u52D5\u7684\u306B\u7F6E\u63DB\u3055\u308C\u307E\u3059\u3002OAuth \u7D4C\u7531\u3067\u8A8D\u8A3C\u306F\u81EA\u52D5\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
72899
72941
|
|
|
72900
72942
|
> **\u91CD\u8981**: \`google-sheets-oauth_request\` \u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306E\u307F\u5229\u7528\u53EF\u80FD\u3067\u3059\u3002\u30B5\u30FC\u30D0\u30FC\u30ED\u30B8\u30C3\u30AF\u306E\u30CF\u30F3\u30C9\u30E9\u5185\u3067\u306F\u5FC5\u305A SDK\uFF08\`connection(id).getValues\` \u306A\u3069\uFF09\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002SDK \u306E fetch \u306F OAuth \u30D7\u30ED\u30AD\u30B7\u7D4C\u7531\u3067\u65E2\u306B\u914D\u7DDA\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30CF\u30F3\u30C9\u30E9\u304B\u3089 \`_sqcore/connections/*/request\` \u3092\u624B\u66F8\u304D\u3067\u547C\u3073\u51FA\u3055\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
|
|
72901
72943
|
|
|
72902
|
-
|
|
72944
|
+
> **\u63A5\u7D9A\u30B9\u30B3\u30FC\u30D7**: \u5404\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306BURL\u3067\u6307\u5B9A\u3055\u308C\u305F1\u3064\u306E\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306B\u7D10\u3065\u304D\u307E\u3059\u3002\u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u4F5C\u6210\u3084\u66F8\u304D\u8FBC\u307F\u306F\u884C\u3044\u307E\u305B\u3093\u3002OAuth \u30B9\u30B3\u30FC\u30D7\u306F \`spreadsheets.readonly\` \u3067\u3059\u3002
|
|
72945
|
+
|
|
72946
|
+
### Google Sheets API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\uFF08\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF09
|
|
72903
72947
|
|
|
72904
|
-
#### \u8AAD\u307F\u53D6\u308A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
|
|
72905
72948
|
- GET \`/{spreadsheetId}\` \u2014 \u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\uFF08\u30BF\u30A4\u30C8\u30EB\u3001\u30B7\u30FC\u30C8\u3001\u30D7\u30ED\u30D1\u30C6\u30A3\uFF09
|
|
72906
72949
|
- GET \`/{spreadsheetId}/values/{range}\` \u2014 \u7BC4\u56F2\u306E\u30BB\u30EB\u5024\u3092\u53D6\u5F97
|
|
72907
72950
|
- GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 \u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97
|
|
72908
72951
|
|
|
72909
|
-
#### \u66F8\u304D\u8FBC\u307F\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
|
|
72910
|
-
- POST \`\`\uFF08\u7A7A\u30D1\u30B9\u3001\u30DC\u30C7\u30A3\u4ED8\u304D\uFF09\u2014 \u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210\u3002Body: \`{ "properties": { "title": "\u30DE\u30A4\u30B7\u30FC\u30C8" }, "sheets": [{ "properties": { "title": "Sheet1" } }] }\`
|
|
72911
|
-
- PUT \`/{spreadsheetId}/values/{range}?valueInputOption=USER_ENTERED\` \u2014 \u7BC4\u56F2\u306E\u30BB\u30EB\u5024\u3092\u66F4\u65B0\u3002Body: \`{ "range": "Sheet1!A1:B2", "majorDimension": "ROWS", "values": [["a","b"],["c","d"]] }\`
|
|
72912
|
-
- POST \`/{spreadsheetId}/values/{range}:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS\` \u2014 \u6700\u7D42\u884C\u306E\u5F8C\u306B\u884C\u3092\u8FFD\u52A0\u3002Body: \`{ "range": "Sheet1!A1", "majorDimension": "ROWS", "values": [["a","b"]] }\`
|
|
72913
|
-
- POST \`/{spreadsheetId}:batchUpdate\` \u2014 \u8907\u6570\u306E\u66F4\u65B0\u3092\u9069\u7528\uFF08\u66F8\u5F0F\u8A2D\u5B9A\u3001\u30B7\u30FC\u30C8\u8FFD\u52A0\u3001\u30BB\u30EB\u7D50\u5408\u306A\u3069\uFF09\u3002Body: \`{ "requests": [...] }\`
|
|
72914
|
-
|
|
72915
72952
|
### \u7BC4\u56F2\u306E\u8868\u8A18\u6CD5\uFF08A1\u8868\u8A18\u6CD5\uFF09
|
|
72916
72953
|
- \`Sheet1!A1:D10\` \u2014 Sheet1\u4E0A\u306E\u7279\u5B9A\u7BC4\u56F2
|
|
72917
72954
|
- \`Sheet1!A:A\` \u2014 Sheet1\u306EA\u5217\u5168\u4F53
|
|
@@ -72924,21 +72961,17 @@ await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie"
|
|
|
72924
72961
|
- \u8868\u793A\u5024\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`valueRenderOption=FORMATTED_VALUE\` \u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u307E\u3059
|
|
72925
72962
|
- \u751F\u306E\u6570\u5024\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`valueRenderOption=UNFORMATTED_VALUE\` \u3092\u4F7F\u7528\u3057\u307E\u3059
|
|
72926
72963
|
- \u5217\u3054\u3068\u306B\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`majorDimension=COLUMNS\` \u3092\u4F7F\u7528\u3057\u307E\u3059
|
|
72927
|
-
- \u66F8\u304D\u8FBC\u307F\u64CD\u4F5C\u3067\u306F\u5E38\u306B \`valueInputOption=USER_ENTERED\` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u5024\u304C\u30E6\u30FC\u30B6\u30FC\u5165\u529B\u306E\u3088\u3046\u306B\u89E3\u6790\u3055\u308C\u307E\u3059\uFF08\u65E5\u4ED8\u3001\u6570\u5024\u3001\u6570\u5F0F\u304C\u81EA\u52D5\u691C\u51FA\uFF09
|
|
72928
|
-
- \u5171\u6709\uFF08permissions\uFF09\u306F\u3053\u306E\u30B3\u30CD\u30AF\u30BF\u7D4C\u7531\u3067\u306F\u884C\u3048\u307E\u305B\u3093\u3002\u4F5C\u6210\u3057\u305F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3078\u306F\u63A5\u7D9A\u3057\u305FOAuth\u30E6\u30FC\u30B6\u30FC\u306E\u307F\u304C\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059
|
|
72929
72964
|
|
|
72930
72965
|
### Business Logic
|
|
72931
72966
|
|
|
72932
|
-
\u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u4EE5\u4E0B\u306B\u793A\u3059\u30B3\u30CD\u30AF\u30BF SDK \u3092\u4F7F\u7528\u3057\u3066\u30CF\u30F3\u30C9\u30E9\u30B3\u30FC\u30C9\u3092\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u76F4\u63A5\u8A8D\u8A3C\u60C5\u5831\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\`INTERNAL_SQUADBASE_*\` \u306E\u74B0\u5883\u5909\u6570\u3092\u4F7F\u3063\u3066\u624B\u52D5\u3067 OAuth \u30D7\u30ED\u30AD\u30B7\u3092\u53E9\u304F\u3053\u3068\u3082\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044 \u2014 SDK \u304C OAuth \u3092\u51E6\u7406\u3057\u307E\u3059\u3002
|
|
72967
|
+
\u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u4EE5\u4E0B\u306B\u793A\u3059\u30B3\u30CD\u30AF\u30BF SDK \u3092\u4F7F\u7528\u3057\u3066\u30CF\u30F3\u30C9\u30E9\u30B3\u30FC\u30C9\u3092\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u76F4\u63A5\u8A8D\u8A3C\u60C5\u5831\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\`INTERNAL_SQUADBASE_*\` \u306E\u74B0\u5883\u5909\u6570\u3092\u4F7F\u3063\u3066\u624B\u52D5\u3067 OAuth \u30D7\u30ED\u30AD\u30B7\u3092\u53E9\u304F\u3053\u3068\u3082\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044 \u2014 SDK \u304C OAuth \u3092\u51E6\u7406\u3057\u307E\u3059\u3002\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306B\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306B\u7D10\u3065\u3051\u3089\u308C\u3066\u3044\u308B\u306E\u3067\u3001\u30CF\u30F3\u30C9\u30E9\u306E\u547C\u3073\u51FA\u3057\u5143\u306B\u6E21\u3055\u305B\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
|
|
72933
72968
|
|
|
72934
72969
|
SDK\uFF08\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\uFF09:
|
|
72935
|
-
- \`client.
|
|
72936
|
-
- \`client.
|
|
72937
|
-
- \`client.
|
|
72938
|
-
- \`client.
|
|
72939
|
-
- \`client.
|
|
72940
|
-
- \`client.appendValues(spreadsheetId, range, values)\` \u2014 \u6700\u7D42\u884C\u306E\u5F8C\u306B\u884C\u3092\u8FFD\u52A0\u3002
|
|
72941
|
-
- \`client.createSpreadsheet(title, sheetNames?)\` \u2014 \u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210\u3002
|
|
72970
|
+
- \`client.spreadsheetId\` \u2014 \u3053\u306E\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u3002
|
|
72971
|
+
- \`client.request(path, init?)\` \u2014 \u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304D fetch\uFF08\`path\` \u306F \`https://sheets.googleapis.com/v4/spreadsheets\` \u306B\u8FFD\u52A0\u3055\u308C\u3001\`{spreadsheetId}\` \u306F\u81EA\u52D5\u7F6E\u63DB\u3055\u308C\u307E\u3059\uFF09\u3002
|
|
72972
|
+
- \`client.getSpreadsheet()\` \u2014 \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3002
|
|
72973
|
+
- \`client.getValues(range)\` \u2014 \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97\uFF08A1 \u8868\u8A18\uFF09\u3002
|
|
72974
|
+
- \`client.batchGetValues(ranges)\` \u2014 \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97\u3002
|
|
72942
72975
|
|
|
72943
72976
|
\u30CF\u30F3\u30C9\u30E9\u306E\u30C6\u30B9\u30C8\u304C \`Connection proxy is not configured\` \u3067\u5931\u6557\u3059\u308B\u5834\u5408\u306F\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u901A\u5E38\u306F\u30B5\u30F3\u30C9\u30DC\u30C3\u30AF\u30B9\u306E\u521D\u671F\u5316\u4E2D\u306B\u8D77\u304D\u307E\u3059\u3002SDK \u3092\u8AE6\u3081\u3066 OAuth \u30D7\u30ED\u30AD\u30B7\u306E URL \u3092\u81EA\u5206\u3067\u7D44\u307F\u7ACB\u3066\u308B\u3053\u3068\u306F **\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044**\u3002
|
|
72944
72977
|
|
|
@@ -72949,23 +72982,16 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
|
|
|
72949
72982
|
|
|
72950
72983
|
const sheets = connection("<connectionId>");
|
|
72951
72984
|
|
|
72952
|
-
// \
|
|
72953
|
-
const
|
|
72954
|
-
const spreadsheetId = newSheet.spreadsheetId;
|
|
72955
|
-
|
|
72956
|
-
// \u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
|
|
72957
|
-
const metadata = await sheets.getSpreadsheet(spreadsheetId);
|
|
72985
|
+
// \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
|
|
72986
|
+
const metadata = await sheets.getSpreadsheet();
|
|
72958
72987
|
console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
|
|
72959
72988
|
|
|
72960
72989
|
// \u30BB\u30EB\u5024\u3092\u53D6\u5F97
|
|
72961
|
-
const values = await sheets.getValues(
|
|
72990
|
+
const values = await sheets.getValues("Sheet1!A1:D10");
|
|
72962
72991
|
console.log(values.values); // 2D array
|
|
72963
72992
|
|
|
72964
|
-
// \
|
|
72965
|
-
await sheets.
|
|
72966
|
-
|
|
72967
|
-
// \u884C\u3092\u8FFD\u52A0
|
|
72968
|
-
await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
|
|
72993
|
+
// \u8907\u6570\u7BC4\u56F2\u3092\u30D0\u30C3\u30C1\u53D6\u5F97
|
|
72994
|
+
const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
|
|
72969
72995
|
\`\`\``
|
|
72970
72996
|
},
|
|
72971
72997
|
tools: tools18
|
|
@@ -73398,12 +73424,12 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
73398
73424
|
});
|
|
73399
73425
|
|
|
73400
73426
|
// ../connectors/src/connectors/hubspot-oauth/setup.ts
|
|
73401
|
-
var
|
|
73427
|
+
var requestToolName2 = `hubspot-oauth_${requestTool11.name}`;
|
|
73402
73428
|
var hubspotOnboarding = new ConnectorOnboarding({
|
|
73403
73429
|
connectionSetupInstructions: {
|
|
73404
73430
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067HubSpot\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
73405
73431
|
|
|
73406
|
-
1. \`${
|
|
73432
|
+
1. \`${requestToolName2}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
73407
73433
|
- \`method\`: \`"GET"\`
|
|
73408
73434
|
- \`path\`: \`"/account-info/v3/details"\`
|
|
73409
73435
|
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
|
|
@@ -73413,7 +73439,7 @@ var hubspotOnboarding = new ConnectorOnboarding({
|
|
|
73413
73439
|
- \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
|
|
73414
73440
|
en: `Follow these steps to set up the HubSpot connection.
|
|
73415
73441
|
|
|
73416
|
-
1. Call \`${
|
|
73442
|
+
1. Call \`${requestToolName2}\` to fetch account info:
|
|
73417
73443
|
- \`method\`: \`"GET"\`
|
|
73418
73444
|
- \`path\`: \`"/account-info/v3/details"\`
|
|
73419
73445
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -73687,12 +73713,12 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
73687
73713
|
});
|
|
73688
73714
|
|
|
73689
73715
|
// ../connectors/src/connectors/stripe-oauth/setup.ts
|
|
73690
|
-
var
|
|
73716
|
+
var requestToolName3 = `stripe-oauth_${requestTool12.name}`;
|
|
73691
73717
|
var stripeOnboarding = new ConnectorOnboarding({
|
|
73692
73718
|
connectionSetupInstructions: {
|
|
73693
73719
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Stripe\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
73694
73720
|
|
|
73695
|
-
1. \`${
|
|
73721
|
+
1. \`${requestToolName3}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
73696
73722
|
- \`method\`: \`"GET"\`
|
|
73697
73723
|
- \`path\`: \`"/v1/accounts"\`
|
|
73698
73724
|
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
|
|
@@ -73702,7 +73728,7 @@ var stripeOnboarding = new ConnectorOnboarding({
|
|
|
73702
73728
|
- \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
|
|
73703
73729
|
en: `Follow these steps to set up the Stripe connection.
|
|
73704
73730
|
|
|
73705
|
-
1. Call \`${
|
|
73731
|
+
1. Call \`${requestToolName3}\` to fetch account info:
|
|
73706
73732
|
- \`method\`: \`"GET"\`
|
|
73707
73733
|
- \`path\`: \`"/v1/accounts"\`
|
|
73708
73734
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -73977,12 +74003,12 @@ Use this tool for all Stripe API interactions: querying charges, customers, invo
|
|
|
73977
74003
|
});
|
|
73978
74004
|
|
|
73979
74005
|
// ../connectors/src/connectors/stripe-api-key/setup.ts
|
|
73980
|
-
var
|
|
74006
|
+
var requestToolName4 = `stripe-api-key_${requestTool13.name}`;
|
|
73981
74007
|
var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
73982
74008
|
connectionSetupInstructions: {
|
|
73983
74009
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Stripe\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
73984
74010
|
|
|
73985
|
-
1. \`${
|
|
74011
|
+
1. \`${requestToolName4}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u6B8B\u9AD8\u3092\u53D6\u5F97\u3059\u308B:
|
|
73986
74012
|
- \`method\`: \`"GET"\`
|
|
73987
74013
|
- \`path\`: \`"/v1/balance"\`
|
|
73988
74014
|
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
|
|
@@ -73992,7 +74018,7 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
|
73992
74018
|
- \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
|
|
73993
74019
|
en: `Follow these steps to set up the Stripe connection.
|
|
73994
74020
|
|
|
73995
|
-
1. Call \`${
|
|
74021
|
+
1. Call \`${requestToolName4}\` to fetch account balance:
|
|
73996
74022
|
- \`method\`: \`"GET"\`
|
|
73997
74023
|
- \`path\`: \`"/v1/balance"\`
|
|
73998
74024
|
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)
|
|
@@ -74002,11 +74028,11 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
|
74002
74028
|
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
|
|
74003
74029
|
},
|
|
74004
74030
|
dataOverviewInstructions: {
|
|
74005
|
-
en: `1. Call ${
|
|
74006
|
-
2. Call ${
|
|
74031
|
+
en: `1. Call ${requestToolName4} with GET /v1/customers?limit=5 to explore customers structure
|
|
74032
|
+
2. Call ${requestToolName4} with GET /v1/charges?limit=5 to explore charges structure
|
|
74007
74033
|
3. Explore other endpoints (invoices, subscriptions, products) as needed`,
|
|
74008
|
-
ja: `1. ${
|
|
74009
|
-
2. ${
|
|
74034
|
+
ja: `1. ${requestToolName4} \u3067 GET /v1/customers?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u9867\u5BA2\u306E\u69CB\u9020\u3092\u78BA\u8A8D
|
|
74035
|
+
2. ${requestToolName4} \u3067 GET /v1/charges?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u8AB2\u91D1\u306E\u69CB\u9020\u3092\u78BA\u8A8D
|
|
74010
74036
|
3. \u5FC5\u8981\u306B\u5FDC\u3058\u3066\u4ED6\u306E\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\uFF08\u8ACB\u6C42\u66F8\u3001\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3001\u5546\u54C1\uFF09\u3092\u63A2\u7D22`
|
|
74011
74037
|
}
|
|
74012
74038
|
});
|
|
@@ -74291,7 +74317,7 @@ Authentication is handled automatically via OAuth proxy.
|
|
|
74291
74317
|
});
|
|
74292
74318
|
|
|
74293
74319
|
// ../connectors/src/connectors/airtable-oauth/setup.ts
|
|
74294
|
-
var
|
|
74320
|
+
var requestToolName5 = `airtable-oauth_${requestTool14.name}`;
|
|
74295
74321
|
var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
74296
74322
|
connectionSetupInstructions: {
|
|
74297
74323
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Airtable OAuth\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
@@ -74301,7 +74327,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
|
74301
74327
|
3. \`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3059:
|
|
74302
74328
|
- \`parameterSlug\`: \`"base-id"\`
|
|
74303
74329
|
- \`value\`: \u62BD\u51FA\u3057\u305F\u30D9\u30FC\u30B9ID
|
|
74304
|
-
4. \`${
|
|
74330
|
+
4. \`${requestToolName5}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30D9\u30FC\u30B9\u306E\u30C6\u30FC\u30D6\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
74305
74331
|
- \`method\`: \`"GET"\`
|
|
74306
74332
|
- \`path\`: \`"/meta/bases/{baseId}/tables"\`
|
|
74307
74333
|
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
|
|
@@ -74316,7 +74342,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
|
74316
74342
|
3. Call \`updateConnectionParameters\`:
|
|
74317
74343
|
- \`parameterSlug\`: \`"base-id"\`
|
|
74318
74344
|
- \`value\`: The extracted base ID
|
|
74319
|
-
4. Call \`${
|
|
74345
|
+
4. Call \`${requestToolName5}\` to fetch the base's table list:
|
|
74320
74346
|
- \`method\`: \`"GET"\`
|
|
74321
74347
|
- \`path\`: \`"/meta/bases/{baseId}/tables"\`
|
|
74322
74348
|
5. If an error is returned, ask the user to check the base sharing settings
|
|
@@ -76894,6 +76920,7 @@ Use this tool for all Shopify API interactions: listing products, orders, custom
|
|
|
76894
76920
|
method: "POST",
|
|
76895
76921
|
headers: { "Content-Type": "application/json" },
|
|
76896
76922
|
body: JSON.stringify({
|
|
76923
|
+
grant_type: "client_credentials",
|
|
76897
76924
|
client_id: clientId,
|
|
76898
76925
|
client_secret: clientSecret
|
|
76899
76926
|
})
|
|
@@ -77217,12 +77244,12 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
77217
77244
|
});
|
|
77218
77245
|
|
|
77219
77246
|
// ../connectors/src/connectors/shopify-oauth/setup.ts
|
|
77220
|
-
var
|
|
77247
|
+
var requestToolName6 = `shopify-oauth_${requestTool22.name}`;
|
|
77221
77248
|
var shopifyOauthOnboarding = new ConnectorOnboarding({
|
|
77222
77249
|
connectionSetupInstructions: {
|
|
77223
77250
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Shopify\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
77224
77251
|
|
|
77225
|
-
1. \`${
|
|
77252
|
+
1. \`${requestToolName6}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30B7\u30E7\u30C3\u30D7\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
77226
77253
|
- \`method\`: \`"GET"\`
|
|
77227
77254
|
- \`path\`: \`"/admin/api/2024-10/shop.json"\`
|
|
77228
77255
|
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
|
|
@@ -77232,7 +77259,7 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
|
|
|
77232
77259
|
- \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
|
|
77233
77260
|
en: `Follow these steps to set up the Shopify connection.
|
|
77234
77261
|
|
|
77235
|
-
1. Call \`${
|
|
77262
|
+
1. Call \`${requestToolName6}\` to fetch shop info:
|
|
77236
77263
|
- \`method\`: \`"GET"\`
|
|
77237
77264
|
- \`path\`: \`"/admin/api/2024-10/shop.json"\`
|
|
77238
77265
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -79489,12 +79516,12 @@ Pagination uses cursor-based start_cursor and page_size (max 100).`,
|
|
|
79489
79516
|
});
|
|
79490
79517
|
|
|
79491
79518
|
// ../connectors/src/connectors/notion-oauth/setup.ts
|
|
79492
|
-
var
|
|
79519
|
+
var requestToolName7 = `notion-oauth_${requestTool28.name}`;
|
|
79493
79520
|
var notionOauthOnboarding = new ConnectorOnboarding({
|
|
79494
79521
|
connectionSetupInstructions: {
|
|
79495
79522
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Notion\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
79496
79523
|
|
|
79497
|
-
1. \`${
|
|
79524
|
+
1. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30DC\u30C3\u30C8\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
79498
79525
|
- \`method\`: \`"GET"\`
|
|
79499
79526
|
- \`path\`: \`"/users/me"\`
|
|
79500
79527
|
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
|
|
@@ -79504,7 +79531,7 @@ var notionOauthOnboarding = new ConnectorOnboarding({
|
|
|
79504
79531
|
- \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
|
|
79505
79532
|
en: `Follow these steps to set up the Notion connection.
|
|
79506
79533
|
|
|
79507
|
-
1. Call \`${
|
|
79534
|
+
1. Call \`${requestToolName7}\` to fetch bot user info:
|
|
79508
79535
|
- \`method\`: \`"GET"\`
|
|
79509
79536
|
- \`path\`: \`"/users/me"\`
|
|
79510
79537
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -82071,7 +82098,7 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
|
|
|
82071
82098
|
});
|
|
82072
82099
|
|
|
82073
82100
|
// ../connectors/src/connectors/gmail/setup.ts
|
|
82074
|
-
var
|
|
82101
|
+
var requestToolName8 = `gmail-service-account_${requestTool35.name}`;
|
|
82075
82102
|
var gmailOnboarding = new ConnectorOnboarding({
|
|
82076
82103
|
connectionSetupInstructions: {
|
|
82077
82104
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Gmail\uFF08\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\uFF09\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u63A5\u7D9A\u4F5C\u6210\u6642\u306B\u306F\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8JSON\u306E\u307F\u304C\u8A2D\u5B9A\u6E08\u307F\u3067\u3001\u59D4\u4EFB\u5BFE\u8C61\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306F\u3053\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
@@ -82083,14 +82110,14 @@ var gmailOnboarding = new ConnectorOnboarding({
|
|
|
82083
82110
|
2. \u53D7\u3051\u53D6\u3063\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
|
|
82084
82111
|
- \`parameterSlug\`: \`"delegated-user-email"\`
|
|
82085
82112
|
- \`options\`: \`[{ value: <\u5165\u529B\u3055\u308C\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9>, label: <\u540C\u3058\u5024> }]\`\uFF081\u4EF6\u306E\u307F\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u81EA\u52D5\u9078\u629E\u3055\u308C\u308B\uFF09
|
|
82086
|
-
3. \`${
|
|
82113
|
+
3. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
|
|
82087
82114
|
- \`method\`: \`"GET"\`
|
|
82088
82115
|
- \`path\`: \`"/me/profile"\`
|
|
82089
82116
|
4. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u4EE5\u4E0B\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u30E6\u30FC\u30B6\u30FC\u306B\u4F1D\u3048\u308B:
|
|
82090
82117
|
- \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u304C\u6709\u52B9\u304B
|
|
82091
82118
|
- Google Workspace\u7BA1\u7406\u30B3\u30F3\u30BD\u30FC\u30EB\u3067Gmail API\u30B9\u30B3\u30FC\u30D7\u304C\u8A31\u53EF\u3055\u308C\u3066\u3044\u308B\u304B
|
|
82092
82119
|
- \u5165\u529B\u3055\u308C\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u6B63\u3057\u3044\u304B
|
|
82093
|
-
5. \`${
|
|
82120
|
+
5. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
82094
82121
|
- \`method\`: \`"GET"\`
|
|
82095
82122
|
- \`path\`: \`"/me/labels"\`
|
|
82096
82123
|
|
|
@@ -82106,14 +82133,14 @@ var gmailOnboarding = new ConnectorOnboarding({
|
|
|
82106
82133
|
2. Save the email via \`updateConnectionParameters\`:
|
|
82107
82134
|
- \`parameterSlug\`: \`"delegated-user-email"\`
|
|
82108
82135
|
- \`options\`: \`[{ value: <entered email>, label: <same value> }]\` (a single option is auto-selected)
|
|
82109
|
-
3. Call \`${
|
|
82136
|
+
3. Call \`${requestToolName8}\` to get the user's profile:
|
|
82110
82137
|
- \`method\`: \`"GET"\`
|
|
82111
82138
|
- \`path\`: \`"/me/profile"\`
|
|
82112
82139
|
4. If an error is returned, ask the user to verify:
|
|
82113
82140
|
- Domain-wide delegation is enabled for the service account
|
|
82114
82141
|
- Gmail API scope is authorized in Google Workspace admin console
|
|
82115
82142
|
- The entered email address is correct
|
|
82116
|
-
5. Call \`${
|
|
82143
|
+
5. Call \`${requestToolName8}\` to get the label list:
|
|
82117
82144
|
- \`method\`: \`"GET"\`
|
|
82118
82145
|
- \`path\`: \`"/me/labels"\`
|
|
82119
82146
|
|
|
@@ -82465,16 +82492,16 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
|
|
|
82465
82492
|
});
|
|
82466
82493
|
|
|
82467
82494
|
// ../connectors/src/connectors/gmail-oauth/setup.ts
|
|
82468
|
-
var
|
|
82495
|
+
var requestToolName9 = `gmail-oauth_${requestTool36.name}`;
|
|
82469
82496
|
var gmailOnboarding2 = new ConnectorOnboarding({
|
|
82470
82497
|
connectionSetupInstructions: {
|
|
82471
82498
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Gmail\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
82472
82499
|
|
|
82473
|
-
1. \`${
|
|
82500
|
+
1. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
|
|
82474
82501
|
- \`method\`: \`"GET"\`
|
|
82475
82502
|
- \`path\`: \`"/me/profile"\`
|
|
82476
82503
|
2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001OAuth\u306E\u8A8D\u8A3C\u304C\u6B63\u3057\u304F\u5B8C\u4E86\u3057\u3066\u3044\u308B\u304B\u78BA\u8A8D\u3059\u308B\u3088\u3046\u30E6\u30FC\u30B6\u30FC\u306B\u4F1D\u3048\u308B
|
|
82477
|
-
3. \`${
|
|
82504
|
+
3. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
82478
82505
|
- \`method\`: \`"GET"\`
|
|
82479
82506
|
- \`path\`: \`"/me/labels"\`
|
|
82480
82507
|
|
|
@@ -82483,11 +82510,11 @@ var gmailOnboarding2 = new ConnectorOnboarding({
|
|
|
82483
82510
|
- \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
|
|
82484
82511
|
en: `Follow these steps to set up the Gmail connection.
|
|
82485
82512
|
|
|
82486
|
-
1. Call \`${
|
|
82513
|
+
1. Call \`${requestToolName9}\` to get the user's profile:
|
|
82487
82514
|
- \`method\`: \`"GET"\`
|
|
82488
82515
|
- \`path\`: \`"/me/profile"\`
|
|
82489
82516
|
2. If an error is returned, ask the user to verify that OAuth authentication completed correctly
|
|
82490
|
-
3. Call \`${
|
|
82517
|
+
3. Call \`${requestToolName9}\` to get the label list:
|
|
82491
82518
|
- \`method\`: \`"GET"\`
|
|
82492
82519
|
- \`path\`: \`"/me/labels"\`
|
|
82493
82520
|
|
|
@@ -83690,12 +83717,12 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
|
|
|
83690
83717
|
});
|
|
83691
83718
|
|
|
83692
83719
|
// ../connectors/src/connectors/zendesk-oauth/setup.ts
|
|
83693
|
-
var
|
|
83720
|
+
var requestToolName10 = `zendesk-oauth_${requestTool39.name}`;
|
|
83694
83721
|
var zendeskOauthOnboarding = new ConnectorOnboarding({
|
|
83695
83722
|
connectionSetupInstructions: {
|
|
83696
83723
|
en: `Follow these steps to set up the Zendesk connection.
|
|
83697
83724
|
|
|
83698
|
-
1. Call \`${
|
|
83725
|
+
1. Call \`${requestToolName10}\` to fetch account info:
|
|
83699
83726
|
- \`method\`: \`"GET"\`
|
|
83700
83727
|
- \`path\`: \`"/api/v2/account/settings.json"\`
|
|
83701
83728
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -83705,7 +83732,7 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
|
|
|
83705
83732
|
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
|
|
83706
83733
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Zendesk\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
83707
83734
|
|
|
83708
|
-
1. \`${
|
|
83735
|
+
1. \`${requestToolName10}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
83709
83736
|
- \`method\`: \`"GET"\`
|
|
83710
83737
|
- \`path\`: \`"/api/v2/account/settings.json"\`
|
|
83711
83738
|
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
|
|
@@ -84330,12 +84357,12 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
|
|
|
84330
84357
|
});
|
|
84331
84358
|
|
|
84332
84359
|
// ../connectors/src/connectors/intercom-oauth/setup.ts
|
|
84333
|
-
var
|
|
84360
|
+
var requestToolName11 = `intercom-oauth_${requestTool41.name}`;
|
|
84334
84361
|
var intercomOauthOnboarding = new ConnectorOnboarding({
|
|
84335
84362
|
connectionSetupInstructions: {
|
|
84336
84363
|
en: `Follow these steps to set up the Intercom connection.
|
|
84337
84364
|
|
|
84338
|
-
1. Call \`${
|
|
84365
|
+
1. Call \`${requestToolName11}\` to verify the connection:
|
|
84339
84366
|
- \`method\`: \`"GET"\`
|
|
84340
84367
|
- \`path\`: \`"/me"\`
|
|
84341
84368
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -84345,7 +84372,7 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
|
|
|
84345
84372
|
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
|
|
84346
84373
|
ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Intercom\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
|
|
84347
84374
|
|
|
84348
|
-
1. \`${
|
|
84375
|
+
1. \`${requestToolName11}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u63A5\u7D9A\u3092\u78BA\u8A8D\u3059\u308B:
|
|
84349
84376
|
- \`method\`: \`"GET"\`
|
|
84350
84377
|
- \`path\`: \`"/me"\`
|
|
84351
84378
|
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
|
|
@@ -85829,7 +85856,7 @@ var parameters61 = {
|
|
|
85829
85856
|
organizationSlug: new ParameterDefinition({
|
|
85830
85857
|
slug: "organization-slug",
|
|
85831
85858
|
name: "Sentry Organization Slug",
|
|
85832
|
-
description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://sentry.io/
|
|
85859
|
+
description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://{slug}.sentry.io/",
|
|
85833
85860
|
envVarBaseKey: "SENTRY_ORGANIZATION_SLUG",
|
|
85834
85861
|
type: "text",
|
|
85835
85862
|
secret: false,
|
|
@@ -86535,11 +86562,11 @@ var influxdbOnboarding = new ConnectorOnboarding({
|
|
|
86535
86562
|
|
|
86536
86563
|
#### Confirm the Database (or Bucket) Name
|
|
86537
86564
|
- InfluxDB 3: use the database name
|
|
86538
|
-
- InfluxDB 2: use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
|
|
86565
|
+
- InfluxDB 2 (includes InfluxDB Cloud on \`*.cloud2.influxdata.com\`): use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
|
|
86539
86566
|
|
|
86540
|
-
#### Organization
|
|
86541
|
-
-
|
|
86542
|
-
-
|
|
86567
|
+
#### Organization
|
|
86568
|
+
- InfluxDB 2: set the Organization parameter to the org that owns the bucket (required for Flux queries and writes)
|
|
86569
|
+
- InfluxDB 3 Cloud Serverless: you can leave Organization blank when only using SQL`,
|
|
86543
86570
|
ja: `#### API \u30C8\u30FC\u30AF\u30F3\u306E\u767A\u884C
|
|
86544
86571
|
1. InfluxDB Cloud / OSS \u306B\u30B5\u30A4\u30F3\u30A4\u30F3
|
|
86545
86572
|
2. Load Data \u2192 API Tokens \u2192 Generate API Token
|
|
@@ -86548,19 +86575,37 @@ var influxdbOnboarding = new ConnectorOnboarding({
|
|
|
86548
86575
|
|
|
86549
86576
|
#### Database (\u307E\u305F\u306F Bucket) \u540D\u306E\u78BA\u8A8D
|
|
86550
86577
|
- InfluxDB 3: database \u540D\u3092\u4F7F\u7528
|
|
86551
|
-
- InfluxDB 2: bucket \u540D\u3092\u4F7F\u7528\uFF08v1/v3 \u4E92\u63DB\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3067\u306F bucket \u304C database \u3068\u3057\u3066\u6271\u308F\u308C\u308B\uFF09
|
|
86578
|
+
- InfluxDB 2\uFF08\`*.cloud2.influxdata.com\` \u306E InfluxDB Cloud \u3092\u542B\u3080\uFF09: bucket \u540D\u3092\u4F7F\u7528\uFF08v1/v3 \u4E92\u63DB\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3067\u306F bucket \u304C database \u3068\u3057\u3066\u6271\u308F\u308C\u308B\uFF09
|
|
86552
86579
|
|
|
86553
|
-
#### Organization
|
|
86554
|
-
- InfluxDB 2
|
|
86555
|
-
- InfluxDB 3 Cloud \u306E\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
|
|
86580
|
+
#### Organization
|
|
86581
|
+
- InfluxDB 2: bucket \u3092\u4FDD\u6709\u3059\u308B\u7D44\u7E54\u540D\u3092 Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8A2D\u5B9A\uFF08Flux \u30AF\u30A8\u30EA\u3068\u66F8\u304D\u8FBC\u307F\u306B\u306F\u5FC5\u9808\uFF09
|
|
86582
|
+
- InfluxDB 3 Cloud Serverless: SQL \u306E\u307F\u3092\u4F7F\u3046\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
|
|
86556
86583
|
},
|
|
86557
86584
|
dataOverviewInstructions: {
|
|
86558
|
-
en: `
|
|
86559
|
-
|
|
86560
|
-
|
|
86561
|
-
|
|
86562
|
-
|
|
86563
|
-
|
|
86585
|
+
en: `The instance may be either InfluxDB 3 (supports SQL) or InfluxDB 2 (Flux only; includes InfluxDB Cloud on '*.cloud2.influxdata.com'). Detect the variant first, then pick the matching endpoints.
|
|
86586
|
+
|
|
86587
|
+
1. Probe for InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT 1" }
|
|
86588
|
+
- 200 with JSON rows \u2192 InfluxDB 3. Continue with SQL.
|
|
86589
|
+
- 405 Method Not Allowed, or an HTML body like "<html>...405 Not Allowed..." \u2192 InfluxDB 2. Fall back to Flux (step 3).
|
|
86590
|
+
2. InfluxDB 3 data overview:
|
|
86591
|
+
a. POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
|
|
86592
|
+
b. POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" } to inspect a sample
|
|
86593
|
+
3. InfluxDB 2 data overview (Organization parameter required):
|
|
86594
|
+
a. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'buckets()' to list buckets
|
|
86595
|
+
b. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' to inspect data
|
|
86596
|
+
- If the Organization parameter was not provided but v3 probing failed, ask the user to set it using updateConnectionParameters before continuing.`,
|
|
86597
|
+
ja: `\u63A5\u7D9A\u5148\u306F InfluxDB 3\uFF08SQL \u5BFE\u5FDC\uFF09\u3068 InfluxDB 2\uFF08Flux \u306E\u307F\u3002\`*.cloud2.influxdata.com\` \u306E InfluxDB Cloud \u3092\u542B\u3080\uFF09\u306E\u3069\u3061\u3089\u306E\u53EF\u80FD\u6027\u3082\u3042\u308A\u307E\u3059\u3002\u307E\u305A\u30D0\u30EA\u30A2\u30F3\u30C8\u3092\u5224\u5225\u3057\u3001\u305D\u308C\u306B\u5408\u3046\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
86598
|
+
|
|
86599
|
+
1. InfluxDB 3 \u306E\u5224\u5225: influxdb_request \u3067 POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SELECT 1" } \u3092\u5B9F\u884C
|
|
86600
|
+
- 200 + JSON \u884C\u304C\u8FD4\u308B \u2192 InfluxDB 3\u3002\u305D\u306E\u307E\u307E SQL \u3067\u7D9A\u884C\u3002
|
|
86601
|
+
- 405 Method Not Allowed\u3001\u307E\u305F\u306F "<html>...405 Not Allowed..." \u306E\u3088\u3046\u306A HTML \u672C\u6587\u304C\u8FD4\u308B \u2192 InfluxDB 2\u3002Flux \u306B\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\uFF08\u624B\u9806 3\uFF09\u3002
|
|
86602
|
+
2. InfluxDB 3 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981:
|
|
86603
|
+
a. POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SHOW TABLES" } \u3067 measurement \u4E00\u89A7\u3092\u53D6\u5F97
|
|
86604
|
+
b. POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" } \u3067\u4EE3\u8868\u7684\u306A measurement \u3092\u78BA\u8A8D
|
|
86605
|
+
3. InfluxDB 2 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981\uFF08Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u5FC5\u9808\uFF09:
|
|
86606
|
+
a. POST /api/v2/query?org=<org>\u3001contentType 'application/vnd.flux'\u3001body 'buckets()' \u3067 bucket \u4E00\u89A7\u3092\u53D6\u5F97
|
|
86607
|
+
b. POST /api/v2/query?org=<org>\u3001contentType 'application/vnd.flux'\u3001body 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' \u3067\u30C7\u30FC\u30BF\u3092\u78BA\u8A8D
|
|
86608
|
+
- Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u672A\u8A2D\u5B9A\u3067 v3 \u5224\u5225\u3082\u5931\u6557\u3057\u305F\u5834\u5408\u306F\u3001updateConnectionParameters \u3067\u30E6\u30FC\u30B6\u30FC\u306B\u8A2D\u5B9A\u3092\u4FC3\u3057\u3066\u304B\u3089\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002`
|
|
86564
86609
|
}
|
|
86565
86610
|
});
|
|
86566
86611
|
|
|
@@ -86569,7 +86614,7 @@ var parameters63 = {
|
|
|
86569
86614
|
url: new ParameterDefinition({
|
|
86570
86615
|
slug: "url",
|
|
86571
86616
|
name: "InfluxDB URL",
|
|
86572
|
-
description: "The base URL of your InfluxDB instance (e.g., '
|
|
86617
|
+
description: "The base URL of your InfluxDB instance. Do not include a trailing slash. Works with both InfluxDB 2 (e.g., InfluxDB Cloud on '*.cloud2.influxdata.com', OSS 2.x) and InfluxDB 3 (Cloud Serverless, Enterprise, OSS 3.x).",
|
|
86573
86618
|
envVarBaseKey: "INFLUXDB_URL",
|
|
86574
86619
|
type: "text",
|
|
86575
86620
|
secret: false,
|
|
@@ -86596,7 +86641,7 @@ var parameters63 = {
|
|
|
86596
86641
|
org: new ParameterDefinition({
|
|
86597
86642
|
slug: "org",
|
|
86598
86643
|
name: "Organization",
|
|
86599
|
-
description: "The InfluxDB organization name. Required for InfluxDB 2
|
|
86644
|
+
description: "The InfluxDB organization name. Required for InfluxDB 2 Flux queries and writes (including InfluxDB Cloud on '*.cloud2.influxdata.com'). Optional for InfluxDB 3 when only using SQL.",
|
|
86600
86645
|
envVarBaseKey: "INFLUXDB_ORG",
|
|
86601
86646
|
type: "text",
|
|
86602
86647
|
secret: false,
|
|
@@ -86688,10 +86733,17 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
|
|
|
86688
86733
|
}
|
|
86689
86734
|
if (!response.ok) {
|
|
86690
86735
|
let errorMessage = `HTTP ${response.status} ${response.statusText}`;
|
|
86736
|
+
const bodyText = typeof data === "string" ? data : void 0;
|
|
86737
|
+
const isHtml = resContentType.includes("text/html") || bodyText !== void 0 && bodyText.trimStart().startsWith("<");
|
|
86691
86738
|
if (data && typeof data === "object" && !Array.isArray(data) && typeof data.message === "string") {
|
|
86692
86739
|
errorMessage = data.message;
|
|
86693
|
-
} else if (
|
|
86694
|
-
errorMessage =
|
|
86740
|
+
} else if (bodyText) {
|
|
86741
|
+
errorMessage = isHtml ? bodyText.replace(/\s+/g, " ").slice(0, 200) : bodyText;
|
|
86742
|
+
}
|
|
86743
|
+
const hitsV3Path = path4.includes("/api/v3/");
|
|
86744
|
+
const looksLikeMissingV3 = hitsV3Path && (response.status === 405 || response.status === 404 || isHtml);
|
|
86745
|
+
if (looksLikeMissingV3) {
|
|
86746
|
+
errorMessage += " \u2014 This InfluxDB instance does not support the v3 API at this path. It is likely InfluxDB 2 (e.g. InfluxDB Cloud on '*.cloud2.influxdata.com'). Retry via Flux on '/api/v2/query?org={org}' with contentType 'application/vnd.flux'.";
|
|
86695
86747
|
}
|
|
86696
86748
|
return { success: false, error: errorMessage };
|
|
86697
86749
|
}
|
|
@@ -86713,14 +86765,22 @@ var influxdbConnector = new ConnectorPlugin({
|
|
|
86713
86765
|
authType: AUTH_TYPES.API_KEY,
|
|
86714
86766
|
name: "InfluxDB",
|
|
86715
86767
|
description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
|
|
86716
|
-
iconUrl: "https://
|
|
86768
|
+
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/J1JauVRNmahSVTVrpPfQK/18350d8d3f2dc3be25e8e36ee52914a0/influxdb.png",
|
|
86717
86769
|
parameters: parameters63,
|
|
86718
86770
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
86719
86771
|
onboarding: influxdbOnboarding,
|
|
86720
86772
|
systemPrompt: {
|
|
86721
|
-
en: `###
|
|
86773
|
+
en: `### Variant Detection
|
|
86774
|
+
|
|
86775
|
+
The configured instance may be **InfluxDB 3** (supports SQL via \`/api/v3/query_sql\`) or **InfluxDB 2** (Flux only; includes InfluxDB Cloud on \`*.cloud2.influxdata.com\`). Always probe first, then use the matching endpoints:
|
|
86722
86776
|
|
|
86723
|
-
|
|
86777
|
+
1. Call \`influxdb_request\` POST \`/api/v3/query_sql\` with body \`{ "db": "<database>", "q": "SELECT 1" }\`
|
|
86778
|
+
2. 200 + JSON rows \u2192 InfluxDB 3. Use SQL endpoints.
|
|
86779
|
+
3. 405 Method Not Allowed or HTML body (e.g. \`<html>...405 Not Allowed...</html>\`) \u2192 InfluxDB 2. Use Flux via \`/api/v2/query?org={org}\`. Require the \`org\` parameter; if missing, ask the user via \`updateConnectionParameters\`.
|
|
86780
|
+
|
|
86781
|
+
### Tools
|
|
86782
|
+
|
|
86783
|
+
- \`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. On InfluxDB 3 prefer SQL (\`POST /api/v3/query_sql\`) \u2014 it returns JSON rows that are directly usable. On InfluxDB 2 use Flux (\`POST /api/v2/query?org={org}\`) \u2014 the response is annotated CSV. Writes use \`POST /api/v3/write_lp?db={db}\` (v3) or \`POST /api/v2/write?org={org}&bucket={bucket}\` (v2) with a line-protocol body and \`contentType\` set to \`text/plain; charset=utf-8\`.
|
|
86724
86784
|
|
|
86725
86785
|
### Business Logic
|
|
86726
86786
|
|
|
@@ -86781,7 +86841,15 @@ export default async function handler(c: Context) {
|
|
|
86781
86841
|
- Time filtering uses standard SQL \`time\` column comparisons (\`time >= now() - INTERVAL '...' \`)
|
|
86782
86842
|
- Aggregates: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`; bucket time with \`date_bin('5 minutes', time)\`
|
|
86783
86843
|
- List measurements: \`SHOW TABLES\`; list columns: \`SHOW COLUMNS FROM <measurement>\``,
|
|
86784
|
-
ja: `### \
|
|
86844
|
+
ja: `### \u30D0\u30EA\u30A2\u30F3\u30C8\u5224\u5225
|
|
86845
|
+
|
|
86846
|
+
\u63A5\u7D9A\u5148\u306F **InfluxDB 3**\uFF08\`/api/v3/query_sql\` \u306E SQL \u5BFE\u5FDC\uFF09\u3068 **InfluxDB 2**\uFF08Flux \u306E\u307F\u3002\`*.cloud2.influxdata.com\` \u306E InfluxDB Cloud \u3092\u542B\u3080\uFF09\u306E\u3069\u3061\u3089\u306E\u53EF\u80FD\u6027\u3082\u3042\u308A\u307E\u3059\u3002\u5FC5\u305A\u6700\u521D\u306B\u30D7\u30ED\u30FC\u30D6\u3057\u3066\u304B\u3089\u3001\u5BFE\u5FDC\u3059\u308B\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044:
|
|
86847
|
+
|
|
86848
|
+
1. \`influxdb_request\` \u3067 POST \`/api/v3/query_sql\`\u3001body \`{ "db": "<database>", "q": "SELECT 1" }\` \u3092\u547C\u3073\u51FA\u3059
|
|
86849
|
+
2. 200 + JSON \u884C \u2192 InfluxDB 3\u3002SQL \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u4F7F\u7528\u3002
|
|
86850
|
+
3. 405 Method Not Allowed\u3001\u307E\u305F\u306F HTML \u672C\u6587\uFF08\u4F8B: \`<html>...405 Not Allowed...</html>\`\uFF09\u2192 InfluxDB 2\u3002\`/api/v2/query?org={org}\` \u304B\u3089 Flux \u3092\u4F7F\u7528\u3002\`org\` \u30D1\u30E9\u30E1\u30FC\u30BF\u5FC5\u9808\u3002\u672A\u8A2D\u5B9A\u306A\u3089 \`updateConnectionParameters\` \u3067\u30E6\u30FC\u30B6\u30FC\u306B\u8A2D\u5B9A\u3092\u4F9D\u983C\u3059\u308B\u3002
|
|
86851
|
+
|
|
86852
|
+
### \u30C4\u30FC\u30EB
|
|
86785
86853
|
|
|
86786
86854
|
- \`influxdb_request\`: InfluxDB HTTP API \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002SQL / InfluxQL / Flux \u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u3001line protocol \u66F8\u304D\u8FBC\u307F\u3001bucket / database \u306E\u78BA\u8A8D\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08\`Authorization: Token {token}\`\uFF09\u3068 instance URL \u306F\u81EA\u52D5\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002InfluxDB 3 \u3067\u306F SQL (\`POST /api/v3/query_sql\`) \u304C JSON \u884C\u3092\u8FD4\u3059\u305F\u3081\u6700\u3082\u6271\u3044\u3084\u3059\u3044\u3067\u3059\u3002InfluxDB 2 \u3067\u306F Flux (\`POST /api/v2/query?org={org}\`) \u3092\u4F7F\u7528\u3057\u3001\u30EC\u30B9\u30DD\u30F3\u30B9\u306F\u6CE8\u91C8\u4ED8\u304D CSV \u3067\u3059\u3002\u66F8\u304D\u8FBC\u307F\u306F \`POST /api/v3/write_lp?db={db}\` (v3) \u307E\u305F\u306F \`POST /api/v2/write?org={org}&bucket={bucket}\` (v2) \u306B line protocol \u3092\u9001\u308A\u307E\u3059\uFF08\`contentType\` \u306F \`text/plain; charset=utf-8\`\uFF09\u3002
|
|
86787
86855
|
|
|
@@ -86845,7 +86913,47 @@ export default async function handler(c: Context) {
|
|
|
86845
86913
|
- \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
|
|
86846
86914
|
- measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
|
|
86847
86915
|
},
|
|
86848
|
-
tools: tools63
|
|
86916
|
+
tools: tools63,
|
|
86917
|
+
async checkConnection(params) {
|
|
86918
|
+
const url = (params.url ?? "").replace(/\/$/, "");
|
|
86919
|
+
const token = params.token;
|
|
86920
|
+
if (!url) {
|
|
86921
|
+
return { success: false, error: "InfluxDB URL is not configured" };
|
|
86922
|
+
}
|
|
86923
|
+
if (!token) {
|
|
86924
|
+
return { success: false, error: "API Token is not configured" };
|
|
86925
|
+
}
|
|
86926
|
+
try {
|
|
86927
|
+
const res = await fetch(`${url}/api/v2/orgs`, {
|
|
86928
|
+
method: "GET",
|
|
86929
|
+
headers: {
|
|
86930
|
+
Authorization: `Token ${token}`,
|
|
86931
|
+
Accept: "application/json"
|
|
86932
|
+
}
|
|
86933
|
+
});
|
|
86934
|
+
if (res.status === 401 || res.status === 403) {
|
|
86935
|
+
return {
|
|
86936
|
+
success: false,
|
|
86937
|
+
error: `Authentication failed (HTTP ${res.status}). Check the API token and its permissions.`
|
|
86938
|
+
};
|
|
86939
|
+
}
|
|
86940
|
+
if (!res.ok) {
|
|
86941
|
+
const body = await res.text().catch(() => res.statusText);
|
|
86942
|
+
const snippet = body.replace(/\s+/g, " ").slice(0, 200);
|
|
86943
|
+
return {
|
|
86944
|
+
success: false,
|
|
86945
|
+
error: `Connection check failed: HTTP ${res.status} ${res.statusText} \u2014 ${snippet}`
|
|
86946
|
+
};
|
|
86947
|
+
}
|
|
86948
|
+
return { success: true };
|
|
86949
|
+
} catch (error2) {
|
|
86950
|
+
const message = error2 instanceof Error ? error2.message : String(error2);
|
|
86951
|
+
return {
|
|
86952
|
+
success: false,
|
|
86953
|
+
error: `Failed to reach InfluxDB at ${url}: ${message}`
|
|
86954
|
+
};
|
|
86955
|
+
}
|
|
86956
|
+
}
|
|
86849
86957
|
});
|
|
86850
86958
|
|
|
86851
86959
|
// ../connectors/src/connectors/registry.ts
|