@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/cli/index.js
CHANGED
|
@@ -72734,21 +72734,23 @@ await drive.updateFile("fileId123", {}, "newFolderId", "oldFolderId");
|
|
|
72734
72734
|
}
|
|
72735
72735
|
});
|
|
72736
72736
|
|
|
72737
|
-
// ../connectors/src/connectors/google-sheets/
|
|
72738
|
-
|
|
72739
|
-
dataOverviewInstructions: {
|
|
72740
|
-
en: `1. Create a new spreadsheet with google-sheets-oauth_request (POST with body { properties: { title: "..." } }) or use an existing spreadsheet ID.
|
|
72741
|
-
2. Call google-sheets-oauth_request with GET /{spreadsheetId} to fetch spreadsheet metadata (sheet names and properties).`,
|
|
72742
|
-
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
|
|
72743
|
-
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`
|
|
72744
|
-
}
|
|
72745
|
-
});
|
|
72737
|
+
// ../connectors/src/connectors/google-sheets/tools/request.ts
|
|
72738
|
+
import { z as z27 } from "zod";
|
|
72746
72739
|
|
|
72747
72740
|
// ../connectors/src/connectors/google-sheets/parameters.ts
|
|
72748
|
-
var parameters18 = {
|
|
72741
|
+
var parameters18 = {
|
|
72742
|
+
spreadsheetId: new ParameterDefinition({
|
|
72743
|
+
slug: "spreadsheet-id",
|
|
72744
|
+
name: "Google Sheets Spreadsheet ID",
|
|
72745
|
+
description: "The spreadsheet ID from the Google Sheets URL (the segment between /d/ and /edit in https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit).",
|
|
72746
|
+
envVarBaseKey: "GOOGLE_SHEETS_SPREADSHEET_ID",
|
|
72747
|
+
type: "text",
|
|
72748
|
+
secret: false,
|
|
72749
|
+
required: true
|
|
72750
|
+
})
|
|
72751
|
+
};
|
|
72749
72752
|
|
|
72750
72753
|
// ../connectors/src/connectors/google-sheets/tools/request.ts
|
|
72751
|
-
import { z as z27 } from "zod";
|
|
72752
72754
|
var SHEETS_BASE_URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
|
72753
72755
|
var REQUEST_TIMEOUT_MS17 = 6e4;
|
|
72754
72756
|
var cachedToken13 = null;
|
|
@@ -72787,11 +72789,10 @@ var inputSchema27 = z27.object({
|
|
|
72787
72789
|
"Brief description of what you intend to accomplish with this tool call"
|
|
72788
72790
|
),
|
|
72789
72791
|
connectionId: z27.string().describe("ID of the Google Sheets connection to use"),
|
|
72790
|
-
method: z27.enum(["GET"
|
|
72792
|
+
method: z27.enum(["GET"]).describe("HTTP method. Only GET is supported (read-only analysis)."),
|
|
72791
72793
|
path: z27.string().describe(
|
|
72792
|
-
"API path appended to https://sheets.googleapis.com/v4/spreadsheets (e.g., '
|
|
72794
|
+
"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."
|
|
72793
72795
|
),
|
|
72794
|
-
body: z27.record(z27.string(), z27.unknown()).optional().describe("JSON request body for POST/PUT requests"),
|
|
72795
72796
|
queryParams: z27.record(z27.string(), z27.string()).optional().describe("Query parameters to append to the URL")
|
|
72796
72797
|
});
|
|
72797
72798
|
var outputSchema27 = z27.discriminatedUnion("success", [
|
|
@@ -72807,12 +72808,12 @@ var outputSchema27 = z27.discriminatedUnion("success", [
|
|
|
72807
72808
|
]);
|
|
72808
72809
|
var requestTool9 = new ConnectorTool({
|
|
72809
72810
|
name: "request",
|
|
72810
|
-
description: `Send authenticated requests to the Google Sheets API v4.
|
|
72811
|
-
|
|
72811
|
+
description: `Send authenticated GET requests to the Google Sheets API v4 for read-only analysis.
|
|
72812
|
+
The \`{spreadsheetId}\` placeholder in the path is automatically replaced with the connection's configured spreadsheet ID.
|
|
72812
72813
|
Authentication is handled automatically via OAuth proxy.`,
|
|
72813
72814
|
inputSchema: inputSchema27,
|
|
72814
72815
|
outputSchema: outputSchema27,
|
|
72815
|
-
async execute({ connectionId, method, path: path5,
|
|
72816
|
+
async execute({ connectionId, method, path: path5, queryParams }, connections, config) {
|
|
72816
72817
|
const connection = connections.find((c6) => c6.id === connectionId);
|
|
72817
72818
|
if (!connection) {
|
|
72818
72819
|
return {
|
|
@@ -72820,11 +72821,16 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
72820
72821
|
error: `Connection ${connectionId} not found`
|
|
72821
72822
|
};
|
|
72822
72823
|
}
|
|
72824
|
+
const spreadsheetIdParam = connection.parameters.find(
|
|
72825
|
+
(p6) => p6.parameterSlug === parameters18.spreadsheetId.slug
|
|
72826
|
+
);
|
|
72827
|
+
const spreadsheetId = spreadsheetIdParam?.value ?? void 0;
|
|
72828
|
+
const resolvedPath = spreadsheetId ? path5.replace(/\{spreadsheetId\}/g, spreadsheetId) : path5;
|
|
72823
72829
|
console.log(
|
|
72824
|
-
`[connector-request] google-sheets/${connection.name}: ${method} ${
|
|
72830
|
+
`[connector-request] google-sheets/${connection.name}: ${method} ${resolvedPath}`
|
|
72825
72831
|
);
|
|
72826
72832
|
try {
|
|
72827
|
-
let url = `${SHEETS_BASE_URL}${
|
|
72833
|
+
let url = `${SHEETS_BASE_URL}${resolvedPath === "" || resolvedPath.startsWith("/") ? "" : "/"}${resolvedPath}`;
|
|
72828
72834
|
if (queryParams) {
|
|
72829
72835
|
const searchParams = new URLSearchParams(queryParams);
|
|
72830
72836
|
url += `?${searchParams.toString()}`;
|
|
@@ -72842,8 +72848,7 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
72842
72848
|
},
|
|
72843
72849
|
body: JSON.stringify({
|
|
72844
72850
|
url,
|
|
72845
|
-
method
|
|
72846
|
-
...body != null ? { body: JSON.stringify(body) } : {}
|
|
72851
|
+
method
|
|
72847
72852
|
}),
|
|
72848
72853
|
signal: controller.signal
|
|
72849
72854
|
});
|
|
@@ -72863,13 +72868,66 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
72863
72868
|
}
|
|
72864
72869
|
});
|
|
72865
72870
|
|
|
72871
|
+
// ../connectors/src/connectors/google-sheets/setup.ts
|
|
72872
|
+
var requestToolName = `google-sheets-oauth_${requestTool9.name}`;
|
|
72873
|
+
var googleSheetsOnboarding = new ConnectorOnboarding({
|
|
72874
|
+
connectionSetupInstructions: {
|
|
72875
|
+
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
|
|
72876
|
+
|
|
72877
|
+
1. \`askUserQuestion\` \u3067\u5206\u6790\u5BFE\u8C61\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306EURL\u3092\u30D2\u30A2\u30EA\u30F3\u30B0\u3059\u308B:
|
|
72878
|
+
- \`type\`: \`"freeText"\`
|
|
72879
|
+
- \`question\`: \u300C\u5206\u6790\u3057\u305F\u3044Google Sheets\u306EURL\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u300D
|
|
72880
|
+
- \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
|
|
72881
|
+
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
|
|
72882
|
+
3. \u62BD\u51FA\u3057\u305FID\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
|
|
72883
|
+
- \`parameterSlug\`: \`"spreadsheet-id"\`
|
|
72884
|
+
- \`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
|
|
72885
|
+
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:
|
|
72886
|
+
- \`method\`: \`"GET"\`
|
|
72887
|
+
- \`path\`: \`"/{spreadsheetId}"\`
|
|
72888
|
+
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:
|
|
72889
|
+
- 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
|
|
72890
|
+
- \u5165\u529B\u3055\u308C\u305FURL\u304C\u6B63\u3057\u3044\u304B
|
|
72891
|
+
|
|
72892
|
+
#### \u5236\u7D04
|
|
72893
|
+
- **\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
|
|
72894
|
+
- \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`,
|
|
72895
|
+
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).
|
|
72896
|
+
|
|
72897
|
+
1. Call \`askUserQuestion\` to ask for the spreadsheet URL to analyze:
|
|
72898
|
+
- \`type\`: \`"freeText"\`
|
|
72899
|
+
- \`question\`: "Please paste the URL of the Google Sheet you want to analyze"
|
|
72900
|
+
- \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
|
|
72901
|
+
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.
|
|
72902
|
+
3. Save the extracted ID via \`updateConnectionParameters\`:
|
|
72903
|
+
- \`parameterSlug\`: \`"spreadsheet-id"\`
|
|
72904
|
+
- \`options\`: \`[{ value: <extracted ID>, label: <same value> }]\` (a single option is auto-selected)
|
|
72905
|
+
4. Verify access by calling \`${requestToolName}\`:
|
|
72906
|
+
- \`method\`: \`"GET"\`
|
|
72907
|
+
- \`path\`: \`"/{spreadsheetId}"\`
|
|
72908
|
+
5. If an error is returned, ask the user to verify:
|
|
72909
|
+
- The OAuthed Google account has read access to the spreadsheet
|
|
72910
|
+
- The URL they entered is correct
|
|
72911
|
+
|
|
72912
|
+
#### Constraints
|
|
72913
|
+
- **Do NOT read large amounts of cell data during setup**. Only the metadata request specified above is allowed
|
|
72914
|
+
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
|
|
72915
|
+
},
|
|
72916
|
+
dataOverviewInstructions: {
|
|
72917
|
+
en: `1. Call ${requestToolName} with GET /{spreadsheetId} to fetch spreadsheet metadata (sheet names, grid properties)
|
|
72918
|
+
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`,
|
|
72919
|
+
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
|
|
72920
|
+
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`
|
|
72921
|
+
}
|
|
72922
|
+
});
|
|
72923
|
+
|
|
72866
72924
|
// ../connectors/src/connectors/google-sheets/index.ts
|
|
72867
72925
|
var tools18 = { request: requestTool9 };
|
|
72868
72926
|
var googleSheetsConnector = new ConnectorPlugin({
|
|
72869
72927
|
slug: "google-sheets",
|
|
72870
72928
|
authType: AUTH_TYPES.OAUTH,
|
|
72871
72929
|
name: "Google Sheets",
|
|
72872
|
-
description: "Connect to Google Sheets for
|
|
72930
|
+
description: "Connect to an existing Google Sheets spreadsheet for read-only data analysis using OAuth.",
|
|
72873
72931
|
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1UPQuggyiZmbb26CuaSr2h/032770e8739b183fa00b7625f024e536/google-sheets.svg",
|
|
72874
72932
|
parameters: parameters18,
|
|
72875
72933
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
@@ -72878,30 +72936,25 @@ var googleSheetsConnector = new ConnectorPlugin({
|
|
|
72878
72936
|
allowlist: [
|
|
72879
72937
|
{
|
|
72880
72938
|
host: "sheets.googleapis.com",
|
|
72881
|
-
methods: ["GET"
|
|
72939
|
+
methods: ["GET"]
|
|
72882
72940
|
}
|
|
72883
72941
|
]
|
|
72884
72942
|
},
|
|
72885
72943
|
systemPrompt: {
|
|
72886
72944
|
en: `### Tools (setup-time only)
|
|
72887
72945
|
|
|
72888
|
-
- \`google-sheets-oauth_request\`: Call the Google Sheets API during setup / data overview.
|
|
72946
|
+
- \`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.
|
|
72889
72947
|
|
|
72890
72948
|
> **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.
|
|
72891
72949
|
|
|
72892
|
-
|
|
72950
|
+
> **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\`.
|
|
72951
|
+
|
|
72952
|
+
### Google Sheets API Reference (read-only)
|
|
72893
72953
|
|
|
72894
|
-
#### Read Endpoints
|
|
72895
72954
|
- GET \`/{spreadsheetId}\` \u2014 Get spreadsheet metadata (title, sheets, properties)
|
|
72896
72955
|
- GET \`/{spreadsheetId}/values/{range}\` \u2014 Get cell values for a range
|
|
72897
72956
|
- GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 Get values for multiple ranges
|
|
72898
72957
|
|
|
72899
|
-
#### Write Endpoints
|
|
72900
|
-
- POST \`\` (empty path, with body) \u2014 Create a new spreadsheet. Body: \`{ "properties": { "title": "My Sheet" }, "sheets": [{ "properties": { "title": "Sheet1" } }] }\`
|
|
72901
|
-
- 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"]] }\`
|
|
72902
|
-
- 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"]] }\`
|
|
72903
|
-
- POST \`/{spreadsheetId}:batchUpdate\` \u2014 Apply multiple updates (formatting, add sheets, merge cells, etc.). Body: \`{ "requests": [...] }\`
|
|
72904
|
-
|
|
72905
72958
|
### Range Notation (A1 notation)
|
|
72906
72959
|
- \`Sheet1!A1:D10\` \u2014 Specific range on Sheet1
|
|
72907
72960
|
- \`Sheet1!A:A\` \u2014 Entire column A on Sheet1
|
|
@@ -72914,21 +72967,17 @@ var googleSheetsConnector = new ConnectorPlugin({
|
|
|
72914
72967
|
- Use \`valueRenderOption=FORMATTED_VALUE\` query param to get display values
|
|
72915
72968
|
- Use \`valueRenderOption=UNFORMATTED_VALUE\` for raw numeric values
|
|
72916
72969
|
- Use \`majorDimension=COLUMNS\` to get data organized by columns instead of rows
|
|
72917
|
-
- For write operations, always use \`valueInputOption=USER_ENTERED\` so values are parsed as if typed by a user (dates, numbers, formulas are auto-detected)
|
|
72918
|
-
- Sharing (permissions) cannot be done via this connector; only the OAuth user has access to the created spreadsheets
|
|
72919
72970
|
|
|
72920
72971
|
### Business Logic
|
|
72921
72972
|
|
|
72922
|
-
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.
|
|
72973
|
+
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.
|
|
72923
72974
|
|
|
72924
72975
|
SDK surface (client created via \`connection(connectionId)\`):
|
|
72925
|
-
- \`client.
|
|
72926
|
-
- \`client.
|
|
72927
|
-
- \`client.
|
|
72928
|
-
- \`client.
|
|
72929
|
-
- \`client.
|
|
72930
|
-
- \`client.appendValues(spreadsheetId, range, values)\` \u2014 append rows after the last row.
|
|
72931
|
-
- \`client.createSpreadsheet(title, sheetNames?)\` \u2014 create a new spreadsheet.
|
|
72976
|
+
- \`client.spreadsheetId\` \u2014 the spreadsheet ID configured for this connection.
|
|
72977
|
+
- \`client.request(path, init?)\` \u2014 low-level authenticated fetch (\`path\` is appended to \`https://sheets.googleapis.com/v4/spreadsheets\`; \`{spreadsheetId}\` is auto-replaced).
|
|
72978
|
+
- \`client.getSpreadsheet()\` \u2014 fetch spreadsheet metadata for the configured spreadsheet.
|
|
72979
|
+
- \`client.getValues(range)\` \u2014 read a range (A1 notation) from the configured spreadsheet.
|
|
72980
|
+
- \`client.batchGetValues(ranges)\` \u2014 read multiple ranges from the configured spreadsheet.
|
|
72932
72981
|
|
|
72933
72982
|
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.
|
|
72934
72983
|
|
|
@@ -72939,43 +72988,31 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
|
|
|
72939
72988
|
|
|
72940
72989
|
const sheets = connection("<connectionId>");
|
|
72941
72990
|
|
|
72942
|
-
//
|
|
72943
|
-
const
|
|
72944
|
-
const spreadsheetId = newSheet.spreadsheetId;
|
|
72945
|
-
|
|
72946
|
-
// Get spreadsheet metadata
|
|
72947
|
-
const metadata = await sheets.getSpreadsheet(spreadsheetId);
|
|
72991
|
+
// Get metadata for the configured spreadsheet
|
|
72992
|
+
const metadata = await sheets.getSpreadsheet();
|
|
72948
72993
|
console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
|
|
72949
72994
|
|
|
72950
72995
|
// Get cell values
|
|
72951
|
-
const values = await sheets.getValues(
|
|
72996
|
+
const values = await sheets.getValues("Sheet1!A1:D10");
|
|
72952
72997
|
console.log(values.values); // 2D array
|
|
72953
72998
|
|
|
72954
|
-
//
|
|
72955
|
-
await sheets.
|
|
72956
|
-
|
|
72957
|
-
// Append rows
|
|
72958
|
-
await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
|
|
72999
|
+
// Batch-get multiple ranges
|
|
73000
|
+
const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
|
|
72959
73001
|
\`\`\``,
|
|
72960
73002
|
ja: `### \u30C4\u30FC\u30EB\uFF08\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306E\u307F\uFF09
|
|
72961
73003
|
|
|
72962
|
-
- \`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\
|
|
73004
|
+
- \`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
|
|
72963
73005
|
|
|
72964
73006
|
> **\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
|
|
72965
73007
|
|
|
72966
|
-
|
|
73008
|
+
> **\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
|
|
73009
|
+
|
|
73010
|
+
### Google Sheets API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\uFF08\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF09
|
|
72967
73011
|
|
|
72968
|
-
#### \u8AAD\u307F\u53D6\u308A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
|
|
72969
73012
|
- 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
|
|
72970
73013
|
- GET \`/{spreadsheetId}/values/{range}\` \u2014 \u7BC4\u56F2\u306E\u30BB\u30EB\u5024\u3092\u53D6\u5F97
|
|
72971
73014
|
- GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 \u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97
|
|
72972
73015
|
|
|
72973
|
-
#### \u66F8\u304D\u8FBC\u307F\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
|
|
72974
|
-
- 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" } }] }\`
|
|
72975
|
-
- 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"]] }\`
|
|
72976
|
-
- 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"]] }\`
|
|
72977
|
-
- 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": [...] }\`
|
|
72978
|
-
|
|
72979
73016
|
### \u7BC4\u56F2\u306E\u8868\u8A18\u6CD5\uFF08A1\u8868\u8A18\u6CD5\uFF09
|
|
72980
73017
|
- \`Sheet1!A1:D10\` \u2014 Sheet1\u4E0A\u306E\u7279\u5B9A\u7BC4\u56F2
|
|
72981
73018
|
- \`Sheet1!A:A\` \u2014 Sheet1\u306EA\u5217\u5168\u4F53
|
|
@@ -72988,21 +73025,17 @@ await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie"
|
|
|
72988
73025
|
- \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
|
|
72989
73026
|
- \u751F\u306E\u6570\u5024\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`valueRenderOption=UNFORMATTED_VALUE\` \u3092\u4F7F\u7528\u3057\u307E\u3059
|
|
72990
73027
|
- \u5217\u3054\u3068\u306B\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`majorDimension=COLUMNS\` \u3092\u4F7F\u7528\u3057\u307E\u3059
|
|
72991
|
-
- \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
|
|
72992
|
-
- \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
|
|
72993
73028
|
|
|
72994
73029
|
### Business Logic
|
|
72995
73030
|
|
|
72996
|
-
\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
|
|
73031
|
+
\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
|
|
72997
73032
|
|
|
72998
73033
|
SDK\uFF08\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\uFF09:
|
|
72999
|
-
- \`client.
|
|
73000
|
-
- \`client.
|
|
73001
|
-
- \`client.
|
|
73002
|
-
- \`client.
|
|
73003
|
-
- \`client.
|
|
73004
|
-
- \`client.appendValues(spreadsheetId, range, values)\` \u2014 \u6700\u7D42\u884C\u306E\u5F8C\u306B\u884C\u3092\u8FFD\u52A0\u3002
|
|
73005
|
-
- \`client.createSpreadsheet(title, sheetNames?)\` \u2014 \u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210\u3002
|
|
73034
|
+
- \`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
|
|
73035
|
+
- \`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
|
|
73036
|
+
- \`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
|
|
73037
|
+
- \`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
|
|
73038
|
+
- \`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
|
|
73006
73039
|
|
|
73007
73040
|
\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
|
|
73008
73041
|
|
|
@@ -73013,23 +73046,16 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
|
|
|
73013
73046
|
|
|
73014
73047
|
const sheets = connection("<connectionId>");
|
|
73015
73048
|
|
|
73016
|
-
// \
|
|
73017
|
-
const
|
|
73018
|
-
const spreadsheetId = newSheet.spreadsheetId;
|
|
73019
|
-
|
|
73020
|
-
// \u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
|
|
73021
|
-
const metadata = await sheets.getSpreadsheet(spreadsheetId);
|
|
73049
|
+
// \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
|
|
73050
|
+
const metadata = await sheets.getSpreadsheet();
|
|
73022
73051
|
console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
|
|
73023
73052
|
|
|
73024
73053
|
// \u30BB\u30EB\u5024\u3092\u53D6\u5F97
|
|
73025
|
-
const values = await sheets.getValues(
|
|
73054
|
+
const values = await sheets.getValues("Sheet1!A1:D10");
|
|
73026
73055
|
console.log(values.values); // 2D array
|
|
73027
73056
|
|
|
73028
|
-
// \
|
|
73029
|
-
await sheets.
|
|
73030
|
-
|
|
73031
|
-
// \u884C\u3092\u8FFD\u52A0
|
|
73032
|
-
await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
|
|
73057
|
+
// \u8907\u6570\u7BC4\u56F2\u3092\u30D0\u30C3\u30C1\u53D6\u5F97
|
|
73058
|
+
const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
|
|
73033
73059
|
\`\`\``
|
|
73034
73060
|
},
|
|
73035
73061
|
tools: tools18
|
|
@@ -73462,12 +73488,12 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
73462
73488
|
});
|
|
73463
73489
|
|
|
73464
73490
|
// ../connectors/src/connectors/hubspot-oauth/setup.ts
|
|
73465
|
-
var
|
|
73491
|
+
var requestToolName2 = `hubspot-oauth_${requestTool11.name}`;
|
|
73466
73492
|
var hubspotOnboarding = new ConnectorOnboarding({
|
|
73467
73493
|
connectionSetupInstructions: {
|
|
73468
73494
|
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
|
|
73469
73495
|
|
|
73470
|
-
1. \`${
|
|
73496
|
+
1. \`${requestToolName2}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
73471
73497
|
- \`method\`: \`"GET"\`
|
|
73472
73498
|
- \`path\`: \`"/account-info/v3/details"\`
|
|
73473
73499
|
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
|
|
@@ -73477,7 +73503,7 @@ var hubspotOnboarding = new ConnectorOnboarding({
|
|
|
73477
73503
|
- \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`,
|
|
73478
73504
|
en: `Follow these steps to set up the HubSpot connection.
|
|
73479
73505
|
|
|
73480
|
-
1. Call \`${
|
|
73506
|
+
1. Call \`${requestToolName2}\` to fetch account info:
|
|
73481
73507
|
- \`method\`: \`"GET"\`
|
|
73482
73508
|
- \`path\`: \`"/account-info/v3/details"\`
|
|
73483
73509
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -73751,12 +73777,12 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
73751
73777
|
});
|
|
73752
73778
|
|
|
73753
73779
|
// ../connectors/src/connectors/stripe-oauth/setup.ts
|
|
73754
|
-
var
|
|
73780
|
+
var requestToolName3 = `stripe-oauth_${requestTool12.name}`;
|
|
73755
73781
|
var stripeOnboarding = new ConnectorOnboarding({
|
|
73756
73782
|
connectionSetupInstructions: {
|
|
73757
73783
|
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
|
|
73758
73784
|
|
|
73759
|
-
1. \`${
|
|
73785
|
+
1. \`${requestToolName3}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
73760
73786
|
- \`method\`: \`"GET"\`
|
|
73761
73787
|
- \`path\`: \`"/v1/accounts"\`
|
|
73762
73788
|
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
|
|
@@ -73766,7 +73792,7 @@ var stripeOnboarding = new ConnectorOnboarding({
|
|
|
73766
73792
|
- \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`,
|
|
73767
73793
|
en: `Follow these steps to set up the Stripe connection.
|
|
73768
73794
|
|
|
73769
|
-
1. Call \`${
|
|
73795
|
+
1. Call \`${requestToolName3}\` to fetch account info:
|
|
73770
73796
|
- \`method\`: \`"GET"\`
|
|
73771
73797
|
- \`path\`: \`"/v1/accounts"\`
|
|
73772
73798
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -74041,12 +74067,12 @@ Use this tool for all Stripe API interactions: querying charges, customers, invo
|
|
|
74041
74067
|
});
|
|
74042
74068
|
|
|
74043
74069
|
// ../connectors/src/connectors/stripe-api-key/setup.ts
|
|
74044
|
-
var
|
|
74070
|
+
var requestToolName4 = `stripe-api-key_${requestTool13.name}`;
|
|
74045
74071
|
var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
74046
74072
|
connectionSetupInstructions: {
|
|
74047
74073
|
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
|
|
74048
74074
|
|
|
74049
|
-
1. \`${
|
|
74075
|
+
1. \`${requestToolName4}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u6B8B\u9AD8\u3092\u53D6\u5F97\u3059\u308B:
|
|
74050
74076
|
- \`method\`: \`"GET"\`
|
|
74051
74077
|
- \`path\`: \`"/v1/balance"\`
|
|
74052
74078
|
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
|
|
@@ -74056,7 +74082,7 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
|
74056
74082
|
- \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`,
|
|
74057
74083
|
en: `Follow these steps to set up the Stripe connection.
|
|
74058
74084
|
|
|
74059
|
-
1. Call \`${
|
|
74085
|
+
1. Call \`${requestToolName4}\` to fetch account balance:
|
|
74060
74086
|
- \`method\`: \`"GET"\`
|
|
74061
74087
|
- \`path\`: \`"/v1/balance"\`
|
|
74062
74088
|
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)
|
|
@@ -74066,11 +74092,11 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
|
|
|
74066
74092
|
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
|
|
74067
74093
|
},
|
|
74068
74094
|
dataOverviewInstructions: {
|
|
74069
|
-
en: `1. Call ${
|
|
74070
|
-
2. Call ${
|
|
74095
|
+
en: `1. Call ${requestToolName4} with GET /v1/customers?limit=5 to explore customers structure
|
|
74096
|
+
2. Call ${requestToolName4} with GET /v1/charges?limit=5 to explore charges structure
|
|
74071
74097
|
3. Explore other endpoints (invoices, subscriptions, products) as needed`,
|
|
74072
|
-
ja: `1. ${
|
|
74073
|
-
2. ${
|
|
74098
|
+
ja: `1. ${requestToolName4} \u3067 GET /v1/customers?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u9867\u5BA2\u306E\u69CB\u9020\u3092\u78BA\u8A8D
|
|
74099
|
+
2. ${requestToolName4} \u3067 GET /v1/charges?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u8AB2\u91D1\u306E\u69CB\u9020\u3092\u78BA\u8A8D
|
|
74074
74100
|
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`
|
|
74075
74101
|
}
|
|
74076
74102
|
});
|
|
@@ -74355,7 +74381,7 @@ Authentication is handled automatically via OAuth proxy.
|
|
|
74355
74381
|
});
|
|
74356
74382
|
|
|
74357
74383
|
// ../connectors/src/connectors/airtable-oauth/setup.ts
|
|
74358
|
-
var
|
|
74384
|
+
var requestToolName5 = `airtable-oauth_${requestTool14.name}`;
|
|
74359
74385
|
var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
74360
74386
|
connectionSetupInstructions: {
|
|
74361
74387
|
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
|
|
@@ -74365,7 +74391,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
|
74365
74391
|
3. \`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3059:
|
|
74366
74392
|
- \`parameterSlug\`: \`"base-id"\`
|
|
74367
74393
|
- \`value\`: \u62BD\u51FA\u3057\u305F\u30D9\u30FC\u30B9ID
|
|
74368
|
-
4. \`${
|
|
74394
|
+
4. \`${requestToolName5}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30D9\u30FC\u30B9\u306E\u30C6\u30FC\u30D6\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
74369
74395
|
- \`method\`: \`"GET"\`
|
|
74370
74396
|
- \`path\`: \`"/meta/bases/{baseId}/tables"\`
|
|
74371
74397
|
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
|
|
@@ -74380,7 +74406,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
|
|
|
74380
74406
|
3. Call \`updateConnectionParameters\`:
|
|
74381
74407
|
- \`parameterSlug\`: \`"base-id"\`
|
|
74382
74408
|
- \`value\`: The extracted base ID
|
|
74383
|
-
4. Call \`${
|
|
74409
|
+
4. Call \`${requestToolName5}\` to fetch the base's table list:
|
|
74384
74410
|
- \`method\`: \`"GET"\`
|
|
74385
74411
|
- \`path\`: \`"/meta/bases/{baseId}/tables"\`
|
|
74386
74412
|
5. If an error is returned, ask the user to check the base sharing settings
|
|
@@ -76958,6 +76984,7 @@ Use this tool for all Shopify API interactions: listing products, orders, custom
|
|
|
76958
76984
|
method: "POST",
|
|
76959
76985
|
headers: { "Content-Type": "application/json" },
|
|
76960
76986
|
body: JSON.stringify({
|
|
76987
|
+
grant_type: "client_credentials",
|
|
76961
76988
|
client_id: clientId,
|
|
76962
76989
|
client_secret: clientSecret
|
|
76963
76990
|
})
|
|
@@ -77281,12 +77308,12 @@ Authentication is handled automatically via OAuth proxy.`,
|
|
|
77281
77308
|
});
|
|
77282
77309
|
|
|
77283
77310
|
// ../connectors/src/connectors/shopify-oauth/setup.ts
|
|
77284
|
-
var
|
|
77311
|
+
var requestToolName6 = `shopify-oauth_${requestTool22.name}`;
|
|
77285
77312
|
var shopifyOauthOnboarding = new ConnectorOnboarding({
|
|
77286
77313
|
connectionSetupInstructions: {
|
|
77287
77314
|
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
|
|
77288
77315
|
|
|
77289
|
-
1. \`${
|
|
77316
|
+
1. \`${requestToolName6}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30B7\u30E7\u30C3\u30D7\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
77290
77317
|
- \`method\`: \`"GET"\`
|
|
77291
77318
|
- \`path\`: \`"/admin/api/2024-10/shop.json"\`
|
|
77292
77319
|
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
|
|
@@ -77296,7 +77323,7 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
|
|
|
77296
77323
|
- \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`,
|
|
77297
77324
|
en: `Follow these steps to set up the Shopify connection.
|
|
77298
77325
|
|
|
77299
|
-
1. Call \`${
|
|
77326
|
+
1. Call \`${requestToolName6}\` to fetch shop info:
|
|
77300
77327
|
- \`method\`: \`"GET"\`
|
|
77301
77328
|
- \`path\`: \`"/admin/api/2024-10/shop.json"\`
|
|
77302
77329
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -79553,12 +79580,12 @@ Pagination uses cursor-based start_cursor and page_size (max 100).`,
|
|
|
79553
79580
|
});
|
|
79554
79581
|
|
|
79555
79582
|
// ../connectors/src/connectors/notion-oauth/setup.ts
|
|
79556
|
-
var
|
|
79583
|
+
var requestToolName7 = `notion-oauth_${requestTool28.name}`;
|
|
79557
79584
|
var notionOauthOnboarding = new ConnectorOnboarding({
|
|
79558
79585
|
connectionSetupInstructions: {
|
|
79559
79586
|
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
|
|
79560
79587
|
|
|
79561
|
-
1. \`${
|
|
79588
|
+
1. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30DC\u30C3\u30C8\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
79562
79589
|
- \`method\`: \`"GET"\`
|
|
79563
79590
|
- \`path\`: \`"/users/me"\`
|
|
79564
79591
|
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
|
|
@@ -79568,7 +79595,7 @@ var notionOauthOnboarding = new ConnectorOnboarding({
|
|
|
79568
79595
|
- \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`,
|
|
79569
79596
|
en: `Follow these steps to set up the Notion connection.
|
|
79570
79597
|
|
|
79571
|
-
1. Call \`${
|
|
79598
|
+
1. Call \`${requestToolName7}\` to fetch bot user info:
|
|
79572
79599
|
- \`method\`: \`"GET"\`
|
|
79573
79600
|
- \`path\`: \`"/users/me"\`
|
|
79574
79601
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -82135,7 +82162,7 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
|
|
|
82135
82162
|
});
|
|
82136
82163
|
|
|
82137
82164
|
// ../connectors/src/connectors/gmail/setup.ts
|
|
82138
|
-
var
|
|
82165
|
+
var requestToolName8 = `gmail-service-account_${requestTool35.name}`;
|
|
82139
82166
|
var gmailOnboarding = new ConnectorOnboarding({
|
|
82140
82167
|
connectionSetupInstructions: {
|
|
82141
82168
|
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
|
|
@@ -82147,14 +82174,14 @@ var gmailOnboarding = new ConnectorOnboarding({
|
|
|
82147
82174
|
2. \u53D7\u3051\u53D6\u3063\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
|
|
82148
82175
|
- \`parameterSlug\`: \`"delegated-user-email"\`
|
|
82149
82176
|
- \`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
|
|
82150
|
-
3. \`${
|
|
82177
|
+
3. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
|
|
82151
82178
|
- \`method\`: \`"GET"\`
|
|
82152
82179
|
- \`path\`: \`"/me/profile"\`
|
|
82153
82180
|
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:
|
|
82154
82181
|
- \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u304C\u6709\u52B9\u304B
|
|
82155
82182
|
- Google Workspace\u7BA1\u7406\u30B3\u30F3\u30BD\u30FC\u30EB\u3067Gmail API\u30B9\u30B3\u30FC\u30D7\u304C\u8A31\u53EF\u3055\u308C\u3066\u3044\u308B\u304B
|
|
82156
82183
|
- \u5165\u529B\u3055\u308C\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u6B63\u3057\u3044\u304B
|
|
82157
|
-
5. \`${
|
|
82184
|
+
5. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
82158
82185
|
- \`method\`: \`"GET"\`
|
|
82159
82186
|
- \`path\`: \`"/me/labels"\`
|
|
82160
82187
|
|
|
@@ -82170,14 +82197,14 @@ var gmailOnboarding = new ConnectorOnboarding({
|
|
|
82170
82197
|
2. Save the email via \`updateConnectionParameters\`:
|
|
82171
82198
|
- \`parameterSlug\`: \`"delegated-user-email"\`
|
|
82172
82199
|
- \`options\`: \`[{ value: <entered email>, label: <same value> }]\` (a single option is auto-selected)
|
|
82173
|
-
3. Call \`${
|
|
82200
|
+
3. Call \`${requestToolName8}\` to get the user's profile:
|
|
82174
82201
|
- \`method\`: \`"GET"\`
|
|
82175
82202
|
- \`path\`: \`"/me/profile"\`
|
|
82176
82203
|
4. If an error is returned, ask the user to verify:
|
|
82177
82204
|
- Domain-wide delegation is enabled for the service account
|
|
82178
82205
|
- Gmail API scope is authorized in Google Workspace admin console
|
|
82179
82206
|
- The entered email address is correct
|
|
82180
|
-
5. Call \`${
|
|
82207
|
+
5. Call \`${requestToolName8}\` to get the label list:
|
|
82181
82208
|
- \`method\`: \`"GET"\`
|
|
82182
82209
|
- \`path\`: \`"/me/labels"\`
|
|
82183
82210
|
|
|
@@ -82529,16 +82556,16 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
|
|
|
82529
82556
|
});
|
|
82530
82557
|
|
|
82531
82558
|
// ../connectors/src/connectors/gmail-oauth/setup.ts
|
|
82532
|
-
var
|
|
82559
|
+
var requestToolName9 = `gmail-oauth_${requestTool36.name}`;
|
|
82533
82560
|
var gmailOnboarding2 = new ConnectorOnboarding({
|
|
82534
82561
|
connectionSetupInstructions: {
|
|
82535
82562
|
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
|
|
82536
82563
|
|
|
82537
|
-
1. \`${
|
|
82564
|
+
1. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
|
|
82538
82565
|
- \`method\`: \`"GET"\`
|
|
82539
82566
|
- \`path\`: \`"/me/profile"\`
|
|
82540
82567
|
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
|
|
82541
|
-
3. \`${
|
|
82568
|
+
3. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
|
|
82542
82569
|
- \`method\`: \`"GET"\`
|
|
82543
82570
|
- \`path\`: \`"/me/labels"\`
|
|
82544
82571
|
|
|
@@ -82547,11 +82574,11 @@ var gmailOnboarding2 = new ConnectorOnboarding({
|
|
|
82547
82574
|
- \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`,
|
|
82548
82575
|
en: `Follow these steps to set up the Gmail connection.
|
|
82549
82576
|
|
|
82550
|
-
1. Call \`${
|
|
82577
|
+
1. Call \`${requestToolName9}\` to get the user's profile:
|
|
82551
82578
|
- \`method\`: \`"GET"\`
|
|
82552
82579
|
- \`path\`: \`"/me/profile"\`
|
|
82553
82580
|
2. If an error is returned, ask the user to verify that OAuth authentication completed correctly
|
|
82554
|
-
3. Call \`${
|
|
82581
|
+
3. Call \`${requestToolName9}\` to get the label list:
|
|
82555
82582
|
- \`method\`: \`"GET"\`
|
|
82556
82583
|
- \`path\`: \`"/me/labels"\`
|
|
82557
82584
|
|
|
@@ -83754,12 +83781,12 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
|
|
|
83754
83781
|
});
|
|
83755
83782
|
|
|
83756
83783
|
// ../connectors/src/connectors/zendesk-oauth/setup.ts
|
|
83757
|
-
var
|
|
83784
|
+
var requestToolName10 = `zendesk-oauth_${requestTool39.name}`;
|
|
83758
83785
|
var zendeskOauthOnboarding = new ConnectorOnboarding({
|
|
83759
83786
|
connectionSetupInstructions: {
|
|
83760
83787
|
en: `Follow these steps to set up the Zendesk connection.
|
|
83761
83788
|
|
|
83762
|
-
1. Call \`${
|
|
83789
|
+
1. Call \`${requestToolName10}\` to fetch account info:
|
|
83763
83790
|
- \`method\`: \`"GET"\`
|
|
83764
83791
|
- \`path\`: \`"/api/v2/account/settings.json"\`
|
|
83765
83792
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -83769,7 +83796,7 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
|
|
|
83769
83796
|
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
|
|
83770
83797
|
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
|
|
83771
83798
|
|
|
83772
|
-
1. \`${
|
|
83799
|
+
1. \`${requestToolName10}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
|
|
83773
83800
|
- \`method\`: \`"GET"\`
|
|
83774
83801
|
- \`path\`: \`"/api/v2/account/settings.json"\`
|
|
83775
83802
|
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
|
|
@@ -84394,12 +84421,12 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
|
|
|
84394
84421
|
});
|
|
84395
84422
|
|
|
84396
84423
|
// ../connectors/src/connectors/intercom-oauth/setup.ts
|
|
84397
|
-
var
|
|
84424
|
+
var requestToolName11 = `intercom-oauth_${requestTool41.name}`;
|
|
84398
84425
|
var intercomOauthOnboarding = new ConnectorOnboarding({
|
|
84399
84426
|
connectionSetupInstructions: {
|
|
84400
84427
|
en: `Follow these steps to set up the Intercom connection.
|
|
84401
84428
|
|
|
84402
|
-
1. Call \`${
|
|
84429
|
+
1. Call \`${requestToolName11}\` to verify the connection:
|
|
84403
84430
|
- \`method\`: \`"GET"\`
|
|
84404
84431
|
- \`path\`: \`"/me"\`
|
|
84405
84432
|
2. If an error is returned, ask the user to check the OAuth connection settings
|
|
@@ -84409,7 +84436,7 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
|
|
|
84409
84436
|
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
|
|
84410
84437
|
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
|
|
84411
84438
|
|
|
84412
|
-
1. \`${
|
|
84439
|
+
1. \`${requestToolName11}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u63A5\u7D9A\u3092\u78BA\u8A8D\u3059\u308B:
|
|
84413
84440
|
- \`method\`: \`"GET"\`
|
|
84414
84441
|
- \`path\`: \`"/me"\`
|
|
84415
84442
|
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
|
|
@@ -85893,7 +85920,7 @@ var parameters61 = {
|
|
|
85893
85920
|
organizationSlug: new ParameterDefinition({
|
|
85894
85921
|
slug: "organization-slug",
|
|
85895
85922
|
name: "Sentry Organization Slug",
|
|
85896
|
-
description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://sentry.io/
|
|
85923
|
+
description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://{slug}.sentry.io/",
|
|
85897
85924
|
envVarBaseKey: "SENTRY_ORGANIZATION_SLUG",
|
|
85898
85925
|
type: "text",
|
|
85899
85926
|
secret: false,
|
|
@@ -86599,11 +86626,11 @@ var influxdbOnboarding = new ConnectorOnboarding({
|
|
|
86599
86626
|
|
|
86600
86627
|
#### Confirm the Database (or Bucket) Name
|
|
86601
86628
|
- InfluxDB 3: use the database name
|
|
86602
|
-
- InfluxDB 2: use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
|
|
86629
|
+
- InfluxDB 2 (includes InfluxDB Cloud on \`*.cloud2.influxdata.com\`): use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
|
|
86603
86630
|
|
|
86604
|
-
#### Organization
|
|
86605
|
-
-
|
|
86606
|
-
-
|
|
86631
|
+
#### Organization
|
|
86632
|
+
- InfluxDB 2: set the Organization parameter to the org that owns the bucket (required for Flux queries and writes)
|
|
86633
|
+
- InfluxDB 3 Cloud Serverless: you can leave Organization blank when only using SQL`,
|
|
86607
86634
|
ja: `#### API \u30C8\u30FC\u30AF\u30F3\u306E\u767A\u884C
|
|
86608
86635
|
1. InfluxDB Cloud / OSS \u306B\u30B5\u30A4\u30F3\u30A4\u30F3
|
|
86609
86636
|
2. Load Data \u2192 API Tokens \u2192 Generate API Token
|
|
@@ -86612,19 +86639,37 @@ var influxdbOnboarding = new ConnectorOnboarding({
|
|
|
86612
86639
|
|
|
86613
86640
|
#### Database (\u307E\u305F\u306F Bucket) \u540D\u306E\u78BA\u8A8D
|
|
86614
86641
|
- 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
|
|
86642
|
+
- 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
|
|
86616
86643
|
|
|
86617
|
-
#### Organization
|
|
86618
|
-
- InfluxDB 2
|
|
86619
|
-
- InfluxDB 3 Cloud \u306E\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
|
|
86644
|
+
#### Organization
|
|
86645
|
+
- 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
|
|
86646
|
+
- InfluxDB 3 Cloud Serverless: SQL \u306E\u307F\u3092\u4F7F\u3046\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
|
|
86620
86647
|
},
|
|
86621
86648
|
dataOverviewInstructions: {
|
|
86622
|
-
en: `
|
|
86623
|
-
|
|
86624
|
-
|
|
86625
|
-
|
|
86626
|
-
|
|
86627
|
-
|
|
86649
|
+
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.
|
|
86650
|
+
|
|
86651
|
+
1. Probe for InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT 1" }
|
|
86652
|
+
- 200 with JSON rows \u2192 InfluxDB 3. Continue with SQL.
|
|
86653
|
+
- 405 Method Not Allowed, or an HTML body like "<html>...405 Not Allowed..." \u2192 InfluxDB 2. Fall back to Flux (step 3).
|
|
86654
|
+
2. InfluxDB 3 data overview:
|
|
86655
|
+
a. POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
|
|
86656
|
+
b. POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" } to inspect a sample
|
|
86657
|
+
3. InfluxDB 2 data overview (Organization parameter required):
|
|
86658
|
+
a. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'buckets()' to list buckets
|
|
86659
|
+
b. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' to inspect data
|
|
86660
|
+
- If the Organization parameter was not provided but v3 probing failed, ask the user to set it using updateConnectionParameters before continuing.`,
|
|
86661
|
+
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
|
|
86662
|
+
|
|
86663
|
+
1. InfluxDB 3 \u306E\u5224\u5225: influxdb_request \u3067 POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SELECT 1" } \u3092\u5B9F\u884C
|
|
86664
|
+
- 200 + JSON \u884C\u304C\u8FD4\u308B \u2192 InfluxDB 3\u3002\u305D\u306E\u307E\u307E SQL \u3067\u7D9A\u884C\u3002
|
|
86665
|
+
- 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
|
|
86666
|
+
2. InfluxDB 3 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981:
|
|
86667
|
+
a. POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SHOW TABLES" } \u3067 measurement \u4E00\u89A7\u3092\u53D6\u5F97
|
|
86668
|
+
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
|
|
86669
|
+
3. InfluxDB 2 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981\uFF08Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u5FC5\u9808\uFF09:
|
|
86670
|
+
a. POST /api/v2/query?org=<org>\u3001contentType 'application/vnd.flux'\u3001body 'buckets()' \u3067 bucket \u4E00\u89A7\u3092\u53D6\u5F97
|
|
86671
|
+
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
|
|
86672
|
+
- 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`
|
|
86628
86673
|
}
|
|
86629
86674
|
});
|
|
86630
86675
|
|
|
@@ -86633,7 +86678,7 @@ var parameters63 = {
|
|
|
86633
86678
|
url: new ParameterDefinition({
|
|
86634
86679
|
slug: "url",
|
|
86635
86680
|
name: "InfluxDB URL",
|
|
86636
|
-
description: "The base URL of your InfluxDB instance (e.g., '
|
|
86681
|
+
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).",
|
|
86637
86682
|
envVarBaseKey: "INFLUXDB_URL",
|
|
86638
86683
|
type: "text",
|
|
86639
86684
|
secret: false,
|
|
@@ -86660,7 +86705,7 @@ var parameters63 = {
|
|
|
86660
86705
|
org: new ParameterDefinition({
|
|
86661
86706
|
slug: "org",
|
|
86662
86707
|
name: "Organization",
|
|
86663
|
-
description: "The InfluxDB organization name. Required for InfluxDB 2
|
|
86708
|
+
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.",
|
|
86664
86709
|
envVarBaseKey: "INFLUXDB_ORG",
|
|
86665
86710
|
type: "text",
|
|
86666
86711
|
secret: false,
|
|
@@ -86752,10 +86797,17 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
|
|
|
86752
86797
|
}
|
|
86753
86798
|
if (!response.ok) {
|
|
86754
86799
|
let errorMessage = `HTTP ${response.status} ${response.statusText}`;
|
|
86800
|
+
const bodyText = typeof data === "string" ? data : void 0;
|
|
86801
|
+
const isHtml = resContentType.includes("text/html") || bodyText !== void 0 && bodyText.trimStart().startsWith("<");
|
|
86755
86802
|
if (data && typeof data === "object" && !Array.isArray(data) && typeof data.message === "string") {
|
|
86756
86803
|
errorMessage = data.message;
|
|
86757
|
-
} else if (
|
|
86758
|
-
errorMessage =
|
|
86804
|
+
} else if (bodyText) {
|
|
86805
|
+
errorMessage = isHtml ? bodyText.replace(/\s+/g, " ").slice(0, 200) : bodyText;
|
|
86806
|
+
}
|
|
86807
|
+
const hitsV3Path = path5.includes("/api/v3/");
|
|
86808
|
+
const looksLikeMissingV3 = hitsV3Path && (response.status === 405 || response.status === 404 || isHtml);
|
|
86809
|
+
if (looksLikeMissingV3) {
|
|
86810
|
+
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'.";
|
|
86759
86811
|
}
|
|
86760
86812
|
return { success: false, error: errorMessage };
|
|
86761
86813
|
}
|
|
@@ -86777,14 +86829,22 @@ var influxdbConnector = new ConnectorPlugin({
|
|
|
86777
86829
|
authType: AUTH_TYPES.API_KEY,
|
|
86778
86830
|
name: "InfluxDB",
|
|
86779
86831
|
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://
|
|
86832
|
+
iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/J1JauVRNmahSVTVrpPfQK/18350d8d3f2dc3be25e8e36ee52914a0/influxdb.png",
|
|
86781
86833
|
parameters: parameters63,
|
|
86782
86834
|
releaseFlag: { dev1: true, dev2: false, prod: false },
|
|
86783
86835
|
onboarding: influxdbOnboarding,
|
|
86784
86836
|
systemPrompt: {
|
|
86785
|
-
en: `###
|
|
86837
|
+
en: `### Variant Detection
|
|
86838
|
+
|
|
86839
|
+
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:
|
|
86786
86840
|
|
|
86787
|
-
|
|
86841
|
+
1. Call \`influxdb_request\` POST \`/api/v3/query_sql\` with body \`{ "db": "<database>", "q": "SELECT 1" }\`
|
|
86842
|
+
2. 200 + JSON rows \u2192 InfluxDB 3. Use SQL endpoints.
|
|
86843
|
+
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\`.
|
|
86844
|
+
|
|
86845
|
+
### Tools
|
|
86846
|
+
|
|
86847
|
+
- \`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\`.
|
|
86788
86848
|
|
|
86789
86849
|
### Business Logic
|
|
86790
86850
|
|
|
@@ -86845,7 +86905,15 @@ export default async function handler(c: Context) {
|
|
|
86845
86905
|
- Time filtering uses standard SQL \`time\` column comparisons (\`time >= now() - INTERVAL '...' \`)
|
|
86846
86906
|
- Aggregates: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`; bucket time with \`date_bin('5 minutes', time)\`
|
|
86847
86907
|
- List measurements: \`SHOW TABLES\`; list columns: \`SHOW COLUMNS FROM <measurement>\``,
|
|
86848
|
-
ja: `### \
|
|
86908
|
+
ja: `### \u30D0\u30EA\u30A2\u30F3\u30C8\u5224\u5225
|
|
86909
|
+
|
|
86910
|
+
\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:
|
|
86911
|
+
|
|
86912
|
+
1. \`influxdb_request\` \u3067 POST \`/api/v3/query_sql\`\u3001body \`{ "db": "<database>", "q": "SELECT 1" }\` \u3092\u547C\u3073\u51FA\u3059
|
|
86913
|
+
2. 200 + JSON \u884C \u2192 InfluxDB 3\u3002SQL \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u4F7F\u7528\u3002
|
|
86914
|
+
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
|
|
86915
|
+
|
|
86916
|
+
### \u30C4\u30FC\u30EB
|
|
86849
86917
|
|
|
86850
86918
|
- \`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
86919
|
|
|
@@ -86909,7 +86977,47 @@ export default async function handler(c: Context) {
|
|
|
86909
86977
|
- \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
|
|
86910
86978
|
- measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
|
|
86911
86979
|
},
|
|
86912
|
-
tools: tools63
|
|
86980
|
+
tools: tools63,
|
|
86981
|
+
async checkConnection(params) {
|
|
86982
|
+
const url = (params.url ?? "").replace(/\/$/, "");
|
|
86983
|
+
const token = params.token;
|
|
86984
|
+
if (!url) {
|
|
86985
|
+
return { success: false, error: "InfluxDB URL is not configured" };
|
|
86986
|
+
}
|
|
86987
|
+
if (!token) {
|
|
86988
|
+
return { success: false, error: "API Token is not configured" };
|
|
86989
|
+
}
|
|
86990
|
+
try {
|
|
86991
|
+
const res = await fetch(`${url}/api/v2/orgs`, {
|
|
86992
|
+
method: "GET",
|
|
86993
|
+
headers: {
|
|
86994
|
+
Authorization: `Token ${token}`,
|
|
86995
|
+
Accept: "application/json"
|
|
86996
|
+
}
|
|
86997
|
+
});
|
|
86998
|
+
if (res.status === 401 || res.status === 403) {
|
|
86999
|
+
return {
|
|
87000
|
+
success: false,
|
|
87001
|
+
error: `Authentication failed (HTTP ${res.status}). Check the API token and its permissions.`
|
|
87002
|
+
};
|
|
87003
|
+
}
|
|
87004
|
+
if (!res.ok) {
|
|
87005
|
+
const body = await res.text().catch(() => res.statusText);
|
|
87006
|
+
const snippet = body.replace(/\s+/g, " ").slice(0, 200);
|
|
87007
|
+
return {
|
|
87008
|
+
success: false,
|
|
87009
|
+
error: `Connection check failed: HTTP ${res.status} ${res.statusText} \u2014 ${snippet}`
|
|
87010
|
+
};
|
|
87011
|
+
}
|
|
87012
|
+
return { success: true };
|
|
87013
|
+
} catch (error2) {
|
|
87014
|
+
const message = error2 instanceof Error ? error2.message : String(error2);
|
|
87015
|
+
return {
|
|
87016
|
+
success: false,
|
|
87017
|
+
error: `Failed to reach InfluxDB at ${url}: ${message}`
|
|
87018
|
+
};
|
|
87019
|
+
}
|
|
87020
|
+
}
|
|
86913
87021
|
});
|
|
86914
87022
|
|
|
86915
87023
|
// ../connectors/src/connectors/registry.ts
|