@squadbase/vite-server 0.1.6 → 0.1.7-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -72734,19 +72734,6 @@ await drive.updateFile("fileId123", {}, "newFolderId", "oldFolderId");
72734
72734
  }
72735
72735
  });
72736
72736
 
72737
- // ../connectors/src/connectors/google-sheets/setup.ts
72738
- var googleSheetsOnboarding = new ConnectorOnboarding({
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
- });
72746
-
72747
- // ../connectors/src/connectors/google-sheets/parameters.ts
72748
- var parameters18 = {};
72749
-
72750
72737
  // ../connectors/src/connectors/google-sheets/tools/request.ts
72751
72738
  import { z as z27 } from "zod";
72752
72739
  var SHEETS_BASE_URL = "https://sheets.googleapis.com/v4/spreadsheets";
@@ -72787,11 +72774,10 @@ var inputSchema27 = z27.object({
72787
72774
  "Brief description of what you intend to accomplish with this tool call"
72788
72775
  ),
72789
72776
  connectionId: z27.string().describe("ID of the Google Sheets connection to use"),
72790
- method: z27.enum(["GET", "POST", "PUT"]).describe("HTTP method"),
72777
+ method: z27.enum(["GET"]).describe("HTTP method. Only GET is supported (read-only analysis)."),
72791
72778
  path: z27.string().describe(
72792
- "API path appended to https://sheets.googleapis.com/v4/spreadsheets (e.g., '', '/{spreadsheetId}', '/{spreadsheetId}/values/Sheet1!A1:D10')."
72779
+ "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
72780
  ),
72794
- body: z27.record(z27.string(), z27.unknown()).optional().describe("JSON request body for POST/PUT requests"),
72795
72781
  queryParams: z27.record(z27.string(), z27.string()).optional().describe("Query parameters to append to the URL")
72796
72782
  });
72797
72783
  var outputSchema27 = z27.discriminatedUnion("success", [
@@ -72807,12 +72793,12 @@ var outputSchema27 = z27.discriminatedUnion("success", [
72807
72793
  ]);
72808
72794
  var requestTool9 = new ConnectorTool({
72809
72795
  name: "request",
72810
- description: `Send authenticated requests to the Google Sheets API v4.
72811
- Supports GET (read), POST (create/append), and PUT (update) methods.
72796
+ description: `Send authenticated GET requests to the Google Sheets API v4 for read-only analysis.
72797
+ The \`{spreadsheetId}\` placeholder in the path is automatically replaced with the connection's configured spreadsheet ID.
72812
72798
  Authentication is handled automatically via OAuth proxy.`,
72813
72799
  inputSchema: inputSchema27,
72814
72800
  outputSchema: outputSchema27,
72815
- async execute({ connectionId, method, path: path5, body, queryParams }, connections, config) {
72801
+ async execute({ connectionId, method, path: path5, queryParams }, connections, config) {
72816
72802
  const connection = connections.find((c6) => c6.id === connectionId);
72817
72803
  if (!connection) {
72818
72804
  return {
@@ -72842,8 +72828,7 @@ Authentication is handled automatically via OAuth proxy.`,
72842
72828
  },
72843
72829
  body: JSON.stringify({
72844
72830
  url,
72845
- method,
72846
- ...body != null ? { body: JSON.stringify(body) } : {}
72831
+ method
72847
72832
  }),
72848
72833
  signal: controller.signal
72849
72834
  });
@@ -72863,13 +72848,69 @@ Authentication is handled automatically via OAuth proxy.`,
72863
72848
  }
72864
72849
  });
72865
72850
 
72851
+ // ../connectors/src/connectors/google-sheets/setup.ts
72852
+ var requestToolName = `google-sheets-oauth_${requestTool9.name}`;
72853
+ var googleSheetsOnboarding = new ConnectorOnboarding({
72854
+ connectionSetupInstructions: {
72855
+ 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
72856
+
72857
+ 1. \`askUserQuestion\` \u3067\u5206\u6790\u5BFE\u8C61\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306EURL\u3092\u30D2\u30A2\u30EA\u30F3\u30B0\u3059\u308B:
72858
+ - \`type\`: \`"freeText"\`
72859
+ - \`question\`: \u300C\u5206\u6790\u3057\u305F\u3044Google Sheets\u306EURL\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u300D
72860
+ - \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
72861
+ 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
72862
+ 3. \u62BD\u51FA\u3057\u305FID\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
72863
+ - \`parameterSlug\`: \`"spreadsheet-id"\`
72864
+ - \`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
72865
+ 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:
72866
+ - \`method\`: \`"GET"\`
72867
+ - \`path\`: \`"/{spreadsheetId}"\`
72868
+ 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:
72869
+ - 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
72870
+ - \u5165\u529B\u3055\u308C\u305FURL\u304C\u6B63\u3057\u3044\u304B
72871
+
72872
+ #### \u5236\u7D04
72873
+ - **\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
72874
+ - \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`,
72875
+ 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).
72876
+
72877
+ 1. Call \`askUserQuestion\` to ask for the spreadsheet URL to analyze:
72878
+ - \`type\`: \`"freeText"\`
72879
+ - \`question\`: "Please paste the URL of the Google Sheet you want to analyze"
72880
+ - \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
72881
+ 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.
72882
+ 3. Save the extracted ID via \`updateConnectionParameters\`:
72883
+ - \`parameterSlug\`: \`"spreadsheet-id"\`
72884
+ - \`options\`: \`[{ value: <extracted ID>, label: <same value> }]\` (a single option is auto-selected)
72885
+ 4. Verify access by calling \`${requestToolName}\`:
72886
+ - \`method\`: \`"GET"\`
72887
+ - \`path\`: \`"/{spreadsheetId}"\`
72888
+ 5. If an error is returned, ask the user to verify:
72889
+ - The OAuthed Google account has read access to the spreadsheet
72890
+ - The URL they entered is correct
72891
+
72892
+ #### Constraints
72893
+ - **Do NOT read large amounts of cell data during setup**. Only the metadata request specified above is allowed
72894
+ - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
72895
+ },
72896
+ dataOverviewInstructions: {
72897
+ en: `1. Call ${requestToolName} with GET /{spreadsheetId} to fetch spreadsheet metadata (sheet names, grid properties)
72898
+ 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`,
72899
+ 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
72900
+ 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`
72901
+ }
72902
+ });
72903
+
72904
+ // ../connectors/src/connectors/google-sheets/parameters.ts
72905
+ var parameters18 = {};
72906
+
72866
72907
  // ../connectors/src/connectors/google-sheets/index.ts
72867
72908
  var tools18 = { request: requestTool9 };
72868
72909
  var googleSheetsConnector = new ConnectorPlugin({
72869
72910
  slug: "google-sheets",
72870
72911
  authType: AUTH_TYPES.OAUTH,
72871
72912
  name: "Google Sheets",
72872
- description: "Connect to Google Sheets for spreadsheet data access and creation using OAuth.",
72913
+ description: "Connect to an existing Google Sheets spreadsheet for read-only data analysis using OAuth.",
72873
72914
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1UPQuggyiZmbb26CuaSr2h/032770e8739b183fa00b7625f024e536/google-sheets.svg",
72874
72915
  parameters: parameters18,
72875
72916
  releaseFlag: { dev1: true, dev2: false, prod: false },
@@ -72878,30 +72919,25 @@ var googleSheetsConnector = new ConnectorPlugin({
72878
72919
  allowlist: [
72879
72920
  {
72880
72921
  host: "sheets.googleapis.com",
72881
- methods: ["GET", "POST", "PUT"]
72922
+ methods: ["GET"]
72882
72923
  }
72883
72924
  ]
72884
72925
  },
72885
72926
  systemPrompt: {
72886
72927
  en: `### Tools (setup-time only)
72887
72928
 
72888
- - \`google-sheets-oauth_request\`: Call the Google Sheets API during setup / data overview. Supports read and write operations. Use it to get/update spreadsheet metadata, cell values, create new spreadsheets, and more. Authentication is configured automatically via OAuth.
72929
+ - \`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
72930
 
72890
72931
  > **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
72932
 
72892
- ### Google Sheets API Reference
72933
+ > **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\`.
72934
+
72935
+ ### Google Sheets API Reference (read-only)
72893
72936
 
72894
- #### Read Endpoints
72895
72937
  - GET \`/{spreadsheetId}\` \u2014 Get spreadsheet metadata (title, sheets, properties)
72896
72938
  - GET \`/{spreadsheetId}/values/{range}\` \u2014 Get cell values for a range
72897
72939
  - GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 Get values for multiple ranges
72898
72940
 
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
72941
  ### Range Notation (A1 notation)
72906
72942
  - \`Sheet1!A1:D10\` \u2014 Specific range on Sheet1
72907
72943
  - \`Sheet1!A:A\` \u2014 Entire column A on Sheet1
@@ -72914,21 +72950,17 @@ var googleSheetsConnector = new ConnectorPlugin({
72914
72950
  - Use \`valueRenderOption=FORMATTED_VALUE\` query param to get display values
72915
72951
  - Use \`valueRenderOption=UNFORMATTED_VALUE\` for raw numeric values
72916
72952
  - 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
72953
 
72920
72954
  ### Business Logic
72921
72955
 
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.
72956
+ 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
72957
 
72924
72958
  SDK surface (client created via \`connection(connectionId)\`):
72925
- - \`client.request(path, init?)\` \u2014 low-level authenticated fetch (\`path\` is appended to \`https://sheets.googleapis.com/v4/spreadsheets\`).
72926
- - \`client.getSpreadsheet(spreadsheetId)\` \u2014 fetch spreadsheet metadata.
72927
- - \`client.getValues(spreadsheetId, range)\` \u2014 read a range (A1 notation).
72928
- - \`client.batchGetValues(spreadsheetId, ranges)\` \u2014 read multiple ranges.
72929
- - \`client.updateValues(spreadsheetId, range, values)\` \u2014 write values to a range.
72930
- - \`client.appendValues(spreadsheetId, range, values)\` \u2014 append rows after the last row.
72931
- - \`client.createSpreadsheet(title, sheetNames?)\` \u2014 create a new spreadsheet.
72959
+ - \`client.spreadsheetId\` \u2014 the spreadsheet ID configured for this connection.
72960
+ - \`client.request(path, init?)\` \u2014 low-level authenticated fetch (\`path\` is appended to \`https://sheets.googleapis.com/v4/spreadsheets\`; \`{spreadsheetId}\` is auto-replaced).
72961
+ - \`client.getSpreadsheet()\` \u2014 fetch spreadsheet metadata for the configured spreadsheet.
72962
+ - \`client.getValues(range)\` \u2014 read a range (A1 notation) from the configured spreadsheet.
72963
+ - \`client.batchGetValues(ranges)\` \u2014 read multiple ranges from the configured spreadsheet.
72932
72964
 
72933
72965
  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
72966
 
@@ -72939,43 +72971,31 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
72939
72971
 
72940
72972
  const sheets = connection("<connectionId>");
72941
72973
 
72942
- // Create a new spreadsheet
72943
- const newSheet = await sheets.createSpreadsheet("Sales Report", ["Q1", "Q2", "Q3", "Q4"]);
72944
- const spreadsheetId = newSheet.spreadsheetId;
72945
-
72946
- // Get spreadsheet metadata
72947
- const metadata = await sheets.getSpreadsheet(spreadsheetId);
72974
+ // Get metadata for the configured spreadsheet
72975
+ const metadata = await sheets.getSpreadsheet();
72948
72976
  console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
72949
72977
 
72950
72978
  // Get cell values
72951
- const values = await sheets.getValues(spreadsheetId, "Sheet1!A1:D10");
72979
+ const values = await sheets.getValues("Sheet1!A1:D10");
72952
72980
  console.log(values.values); // 2D array
72953
72981
 
72954
- // Update cell values
72955
- await sheets.updateValues(spreadsheetId, "Sheet1!A1:B2", [["Name", "Score"], ["Alice", "100"]]);
72956
-
72957
- // Append rows
72958
- await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
72982
+ // Batch-get multiple ranges
72983
+ const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
72959
72984
  \`\`\``,
72960
72985
  ja: `### \u30C4\u30FC\u30EB\uFF08\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306E\u307F\uFF09
72961
72986
 
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\u3068\u66F8\u304D\u8FBC\u307F\u306E\u4E21\u65B9\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30FB\u30BB\u30EB\u5024\u306E\u53D6\u5F97/\u66F4\u65B0\u3001\u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u4F5C\u6210\u306A\u3069\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002OAuth \u7D4C\u7531\u3067\u8A8D\u8A3C\u306F\u81EA\u52D5\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
72987
+ - \`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
72988
 
72964
72989
  > **\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
72990
 
72966
- ### Google Sheets API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
72991
+ > **\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
72992
+
72993
+ ### Google Sheets API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\uFF08\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF09
72967
72994
 
72968
- #### \u8AAD\u307F\u53D6\u308A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
72969
72995
  - 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
72996
  - GET \`/{spreadsheetId}/values/{range}\` \u2014 \u7BC4\u56F2\u306E\u30BB\u30EB\u5024\u3092\u53D6\u5F97
72971
72997
  - GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 \u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97
72972
72998
 
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
72999
  ### \u7BC4\u56F2\u306E\u8868\u8A18\u6CD5\uFF08A1\u8868\u8A18\u6CD5\uFF09
72980
73000
  - \`Sheet1!A1:D10\` \u2014 Sheet1\u4E0A\u306E\u7279\u5B9A\u7BC4\u56F2
72981
73001
  - \`Sheet1!A:A\` \u2014 Sheet1\u306EA\u5217\u5168\u4F53
@@ -72988,21 +73008,17 @@ await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie"
72988
73008
  - \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
73009
  - \u751F\u306E\u6570\u5024\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`valueRenderOption=UNFORMATTED_VALUE\` \u3092\u4F7F\u7528\u3057\u307E\u3059
72990
73010
  - \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
73011
 
72994
73012
  ### Business Logic
72995
73013
 
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
73014
+ \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
73015
 
72998
73016
  SDK\uFF08\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\uFF09:
72999
- - \`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\u307E\u3059\uFF09\u3002
73000
- - \`client.getSpreadsheet(spreadsheetId)\` \u2014 \u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3002
73001
- - \`client.getValues(spreadsheetId, range)\` \u2014 \u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97\uFF08A1 \u8868\u8A18\uFF09\u3002
73002
- - \`client.batchGetValues(spreadsheetId, ranges)\` \u2014 \u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97\u3002
73003
- - \`client.updateValues(spreadsheetId, range, values)\` \u2014 \u7BC4\u56F2\u306B\u5024\u3092\u66F8\u304D\u8FBC\u307F\u3002
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
73017
+ - \`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
73018
+ - \`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
73019
+ - \`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
73020
+ - \`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
73021
+ - \`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
73022
 
73007
73023
  \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
73024
 
@@ -73013,23 +73029,16 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
73013
73029
 
73014
73030
  const sheets = connection("<connectionId>");
73015
73031
 
73016
- // \u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210
73017
- const newSheet = await sheets.createSpreadsheet("\u58F2\u4E0A\u30EC\u30DD\u30FC\u30C8", ["Q1", "Q2", "Q3", "Q4"]);
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);
73032
+ // \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
73033
+ const metadata = await sheets.getSpreadsheet();
73022
73034
  console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
73023
73035
 
73024
73036
  // \u30BB\u30EB\u5024\u3092\u53D6\u5F97
73025
- const values = await sheets.getValues(spreadsheetId, "Sheet1!A1:D10");
73037
+ const values = await sheets.getValues("Sheet1!A1:D10");
73026
73038
  console.log(values.values); // 2D array
73027
73039
 
73028
- // \u30BB\u30EB\u5024\u3092\u66F4\u65B0
73029
- await sheets.updateValues(spreadsheetId, "Sheet1!A1:B2", [["\u540D\u524D", "\u30B9\u30B3\u30A2"], ["Alice", "100"]]);
73030
-
73031
- // \u884C\u3092\u8FFD\u52A0
73032
- await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
73040
+ // \u8907\u6570\u7BC4\u56F2\u3092\u30D0\u30C3\u30C1\u53D6\u5F97
73041
+ const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
73033
73042
  \`\`\``
73034
73043
  },
73035
73044
  tools: tools18
@@ -73462,12 +73471,12 @@ Authentication is handled automatically via OAuth proxy.`,
73462
73471
  });
73463
73472
 
73464
73473
  // ../connectors/src/connectors/hubspot-oauth/setup.ts
73465
- var requestToolName = `hubspot-oauth_${requestTool11.name}`;
73474
+ var requestToolName2 = `hubspot-oauth_${requestTool11.name}`;
73466
73475
  var hubspotOnboarding = new ConnectorOnboarding({
73467
73476
  connectionSetupInstructions: {
73468
73477
  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
73478
 
73470
- 1. \`${requestToolName}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73479
+ 1. \`${requestToolName2}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73471
73480
  - \`method\`: \`"GET"\`
73472
73481
  - \`path\`: \`"/account-info/v3/details"\`
73473
73482
  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 +73486,7 @@ var hubspotOnboarding = new ConnectorOnboarding({
73477
73486
  - \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
73487
  en: `Follow these steps to set up the HubSpot connection.
73479
73488
 
73480
- 1. Call \`${requestToolName}\` to fetch account info:
73489
+ 1. Call \`${requestToolName2}\` to fetch account info:
73481
73490
  - \`method\`: \`"GET"\`
73482
73491
  - \`path\`: \`"/account-info/v3/details"\`
73483
73492
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -73751,12 +73760,12 @@ Authentication is handled automatically via OAuth proxy.`,
73751
73760
  });
73752
73761
 
73753
73762
  // ../connectors/src/connectors/stripe-oauth/setup.ts
73754
- var requestToolName2 = `stripe-oauth_${requestTool12.name}`;
73763
+ var requestToolName3 = `stripe-oauth_${requestTool12.name}`;
73755
73764
  var stripeOnboarding = new ConnectorOnboarding({
73756
73765
  connectionSetupInstructions: {
73757
73766
  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
73767
 
73759
- 1. \`${requestToolName2}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73768
+ 1. \`${requestToolName3}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73760
73769
  - \`method\`: \`"GET"\`
73761
73770
  - \`path\`: \`"/v1/accounts"\`
73762
73771
  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 +73775,7 @@ var stripeOnboarding = new ConnectorOnboarding({
73766
73775
  - \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
73776
  en: `Follow these steps to set up the Stripe connection.
73768
73777
 
73769
- 1. Call \`${requestToolName2}\` to fetch account info:
73778
+ 1. Call \`${requestToolName3}\` to fetch account info:
73770
73779
  - \`method\`: \`"GET"\`
73771
73780
  - \`path\`: \`"/v1/accounts"\`
73772
73781
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -74041,12 +74050,12 @@ Use this tool for all Stripe API interactions: querying charges, customers, invo
74041
74050
  });
74042
74051
 
74043
74052
  // ../connectors/src/connectors/stripe-api-key/setup.ts
74044
- var requestToolName3 = `stripe-api-key_${requestTool13.name}`;
74053
+ var requestToolName4 = `stripe-api-key_${requestTool13.name}`;
74045
74054
  var stripeApiKeyOnboarding = new ConnectorOnboarding({
74046
74055
  connectionSetupInstructions: {
74047
74056
  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
74057
 
74049
- 1. \`${requestToolName3}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u6B8B\u9AD8\u3092\u53D6\u5F97\u3059\u308B:
74058
+ 1. \`${requestToolName4}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u6B8B\u9AD8\u3092\u53D6\u5F97\u3059\u308B:
74050
74059
  - \`method\`: \`"GET"\`
74051
74060
  - \`path\`: \`"/v1/balance"\`
74052
74061
  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 +74065,7 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
74056
74065
  - \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
74066
  en: `Follow these steps to set up the Stripe connection.
74058
74067
 
74059
- 1. Call \`${requestToolName3}\` to fetch account balance:
74068
+ 1. Call \`${requestToolName4}\` to fetch account balance:
74060
74069
  - \`method\`: \`"GET"\`
74061
74070
  - \`path\`: \`"/v1/balance"\`
74062
74071
  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 +74075,11 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
74066
74075
  - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
74067
74076
  },
74068
74077
  dataOverviewInstructions: {
74069
- en: `1. Call ${requestToolName3} with GET /v1/customers?limit=5 to explore customers structure
74070
- 2. Call ${requestToolName3} with GET /v1/charges?limit=5 to explore charges structure
74078
+ en: `1. Call ${requestToolName4} with GET /v1/customers?limit=5 to explore customers structure
74079
+ 2. Call ${requestToolName4} with GET /v1/charges?limit=5 to explore charges structure
74071
74080
  3. Explore other endpoints (invoices, subscriptions, products) as needed`,
74072
- ja: `1. ${requestToolName3} \u3067 GET /v1/customers?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u9867\u5BA2\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74073
- 2. ${requestToolName3} \u3067 GET /v1/charges?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u8AB2\u91D1\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74081
+ ja: `1. ${requestToolName4} \u3067 GET /v1/customers?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u9867\u5BA2\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74082
+ 2. ${requestToolName4} \u3067 GET /v1/charges?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u8AB2\u91D1\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74074
74083
  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
74084
  }
74076
74085
  });
@@ -74355,7 +74364,7 @@ Authentication is handled automatically via OAuth proxy.
74355
74364
  });
74356
74365
 
74357
74366
  // ../connectors/src/connectors/airtable-oauth/setup.ts
74358
- var requestToolName4 = `airtable-oauth_${requestTool14.name}`;
74367
+ var requestToolName5 = `airtable-oauth_${requestTool14.name}`;
74359
74368
  var airtableOauthOnboarding = new ConnectorOnboarding({
74360
74369
  connectionSetupInstructions: {
74361
74370
  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 +74374,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74365
74374
  3. \`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3059:
74366
74375
  - \`parameterSlug\`: \`"base-id"\`
74367
74376
  - \`value\`: \u62BD\u51FA\u3057\u305F\u30D9\u30FC\u30B9ID
74368
- 4. \`${requestToolName4}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30D9\u30FC\u30B9\u306E\u30C6\u30FC\u30D6\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
74377
+ 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
74378
  - \`method\`: \`"GET"\`
74370
74379
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74371
74380
  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 +74389,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74380
74389
  3. Call \`updateConnectionParameters\`:
74381
74390
  - \`parameterSlug\`: \`"base-id"\`
74382
74391
  - \`value\`: The extracted base ID
74383
- 4. Call \`${requestToolName4}\` to fetch the base's table list:
74392
+ 4. Call \`${requestToolName5}\` to fetch the base's table list:
74384
74393
  - \`method\`: \`"GET"\`
74385
74394
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74386
74395
  5. If an error is returned, ask the user to check the base sharing settings
@@ -76958,6 +76967,7 @@ Use this tool for all Shopify API interactions: listing products, orders, custom
76958
76967
  method: "POST",
76959
76968
  headers: { "Content-Type": "application/json" },
76960
76969
  body: JSON.stringify({
76970
+ grant_type: "client_credentials",
76961
76971
  client_id: clientId,
76962
76972
  client_secret: clientSecret
76963
76973
  })
@@ -77281,12 +77291,12 @@ Authentication is handled automatically via OAuth proxy.`,
77281
77291
  });
77282
77292
 
77283
77293
  // ../connectors/src/connectors/shopify-oauth/setup.ts
77284
- var requestToolName5 = `shopify-oauth_${requestTool22.name}`;
77294
+ var requestToolName6 = `shopify-oauth_${requestTool22.name}`;
77285
77295
  var shopifyOauthOnboarding = new ConnectorOnboarding({
77286
77296
  connectionSetupInstructions: {
77287
77297
  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
77298
 
77289
- 1. \`${requestToolName5}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30B7\u30E7\u30C3\u30D7\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
77299
+ 1. \`${requestToolName6}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30B7\u30E7\u30C3\u30D7\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
77290
77300
  - \`method\`: \`"GET"\`
77291
77301
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77292
77302
  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 +77306,7 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
77296
77306
  - \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
77307
  en: `Follow these steps to set up the Shopify connection.
77298
77308
 
77299
- 1. Call \`${requestToolName5}\` to fetch shop info:
77309
+ 1. Call \`${requestToolName6}\` to fetch shop info:
77300
77310
  - \`method\`: \`"GET"\`
77301
77311
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77302
77312
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -79553,12 +79563,12 @@ Pagination uses cursor-based start_cursor and page_size (max 100).`,
79553
79563
  });
79554
79564
 
79555
79565
  // ../connectors/src/connectors/notion-oauth/setup.ts
79556
- var requestToolName6 = `notion-oauth_${requestTool28.name}`;
79566
+ var requestToolName7 = `notion-oauth_${requestTool28.name}`;
79557
79567
  var notionOauthOnboarding = new ConnectorOnboarding({
79558
79568
  connectionSetupInstructions: {
79559
79569
  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
79570
 
79561
- 1. \`${requestToolName6}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30DC\u30C3\u30C8\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
79571
+ 1. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30DC\u30C3\u30C8\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
79562
79572
  - \`method\`: \`"GET"\`
79563
79573
  - \`path\`: \`"/users/me"\`
79564
79574
  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 +79578,7 @@ var notionOauthOnboarding = new ConnectorOnboarding({
79568
79578
  - \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
79579
  en: `Follow these steps to set up the Notion connection.
79570
79580
 
79571
- 1. Call \`${requestToolName6}\` to fetch bot user info:
79581
+ 1. Call \`${requestToolName7}\` to fetch bot user info:
79572
79582
  - \`method\`: \`"GET"\`
79573
79583
  - \`path\`: \`"/users/me"\`
79574
79584
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -82135,7 +82145,7 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
82135
82145
  });
82136
82146
 
82137
82147
  // ../connectors/src/connectors/gmail/setup.ts
82138
- var requestToolName7 = `gmail-service-account_${requestTool35.name}`;
82148
+ var requestToolName8 = `gmail-service-account_${requestTool35.name}`;
82139
82149
  var gmailOnboarding = new ConnectorOnboarding({
82140
82150
  connectionSetupInstructions: {
82141
82151
  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 +82157,14 @@ var gmailOnboarding = new ConnectorOnboarding({
82147
82157
  2. \u53D7\u3051\u53D6\u3063\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
82148
82158
  - \`parameterSlug\`: \`"delegated-user-email"\`
82149
82159
  - \`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. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
82160
+ 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
82161
  - \`method\`: \`"GET"\`
82152
82162
  - \`path\`: \`"/me/profile"\`
82153
82163
  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
82164
  - \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u304C\u6709\u52B9\u304B
82155
82165
  - 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
82166
  - \u5165\u529B\u3055\u308C\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u6B63\u3057\u3044\u304B
82157
- 5. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82167
+ 5. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82158
82168
  - \`method\`: \`"GET"\`
82159
82169
  - \`path\`: \`"/me/labels"\`
82160
82170
 
@@ -82170,14 +82180,14 @@ var gmailOnboarding = new ConnectorOnboarding({
82170
82180
  2. Save the email via \`updateConnectionParameters\`:
82171
82181
  - \`parameterSlug\`: \`"delegated-user-email"\`
82172
82182
  - \`options\`: \`[{ value: <entered email>, label: <same value> }]\` (a single option is auto-selected)
82173
- 3. Call \`${requestToolName7}\` to get the user's profile:
82183
+ 3. Call \`${requestToolName8}\` to get the user's profile:
82174
82184
  - \`method\`: \`"GET"\`
82175
82185
  - \`path\`: \`"/me/profile"\`
82176
82186
  4. If an error is returned, ask the user to verify:
82177
82187
  - Domain-wide delegation is enabled for the service account
82178
82188
  - Gmail API scope is authorized in Google Workspace admin console
82179
82189
  - The entered email address is correct
82180
- 5. Call \`${requestToolName7}\` to get the label list:
82190
+ 5. Call \`${requestToolName8}\` to get the label list:
82181
82191
  - \`method\`: \`"GET"\`
82182
82192
  - \`path\`: \`"/me/labels"\`
82183
82193
 
@@ -82529,16 +82539,16 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
82529
82539
  });
82530
82540
 
82531
82541
  // ../connectors/src/connectors/gmail-oauth/setup.ts
82532
- var requestToolName8 = `gmail-oauth_${requestTool36.name}`;
82542
+ var requestToolName9 = `gmail-oauth_${requestTool36.name}`;
82533
82543
  var gmailOnboarding2 = new ConnectorOnboarding({
82534
82544
  connectionSetupInstructions: {
82535
82545
  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
82546
 
82537
- 1. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
82547
+ 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
82548
  - \`method\`: \`"GET"\`
82539
82549
  - \`path\`: \`"/me/profile"\`
82540
82550
  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. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82551
+ 3. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82542
82552
  - \`method\`: \`"GET"\`
82543
82553
  - \`path\`: \`"/me/labels"\`
82544
82554
 
@@ -82547,11 +82557,11 @@ var gmailOnboarding2 = new ConnectorOnboarding({
82547
82557
  - \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
82558
  en: `Follow these steps to set up the Gmail connection.
82549
82559
 
82550
- 1. Call \`${requestToolName8}\` to get the user's profile:
82560
+ 1. Call \`${requestToolName9}\` to get the user's profile:
82551
82561
  - \`method\`: \`"GET"\`
82552
82562
  - \`path\`: \`"/me/profile"\`
82553
82563
  2. If an error is returned, ask the user to verify that OAuth authentication completed correctly
82554
- 3. Call \`${requestToolName8}\` to get the label list:
82564
+ 3. Call \`${requestToolName9}\` to get the label list:
82555
82565
  - \`method\`: \`"GET"\`
82556
82566
  - \`path\`: \`"/me/labels"\`
82557
82567
 
@@ -83754,12 +83764,12 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
83754
83764
  });
83755
83765
 
83756
83766
  // ../connectors/src/connectors/zendesk-oauth/setup.ts
83757
- var requestToolName9 = `zendesk-oauth_${requestTool39.name}`;
83767
+ var requestToolName10 = `zendesk-oauth_${requestTool39.name}`;
83758
83768
  var zendeskOauthOnboarding = new ConnectorOnboarding({
83759
83769
  connectionSetupInstructions: {
83760
83770
  en: `Follow these steps to set up the Zendesk connection.
83761
83771
 
83762
- 1. Call \`${requestToolName9}\` to fetch account info:
83772
+ 1. Call \`${requestToolName10}\` to fetch account info:
83763
83773
  - \`method\`: \`"GET"\`
83764
83774
  - \`path\`: \`"/api/v2/account/settings.json"\`
83765
83775
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -83769,7 +83779,7 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
83769
83779
  - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
83770
83780
  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
83781
 
83772
- 1. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
83782
+ 1. \`${requestToolName10}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
83773
83783
  - \`method\`: \`"GET"\`
83774
83784
  - \`path\`: \`"/api/v2/account/settings.json"\`
83775
83785
  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 +84404,12 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
84394
84404
  });
84395
84405
 
84396
84406
  // ../connectors/src/connectors/intercom-oauth/setup.ts
84397
- var requestToolName10 = `intercom-oauth_${requestTool41.name}`;
84407
+ var requestToolName11 = `intercom-oauth_${requestTool41.name}`;
84398
84408
  var intercomOauthOnboarding = new ConnectorOnboarding({
84399
84409
  connectionSetupInstructions: {
84400
84410
  en: `Follow these steps to set up the Intercom connection.
84401
84411
 
84402
- 1. Call \`${requestToolName10}\` to verify the connection:
84412
+ 1. Call \`${requestToolName11}\` to verify the connection:
84403
84413
  - \`method\`: \`"GET"\`
84404
84414
  - \`path\`: \`"/me"\`
84405
84415
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -84409,7 +84419,7 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
84409
84419
  - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
84410
84420
  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
84421
 
84412
- 1. \`${requestToolName10}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u63A5\u7D9A\u3092\u78BA\u8A8D\u3059\u308B:
84422
+ 1. \`${requestToolName11}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u63A5\u7D9A\u3092\u78BA\u8A8D\u3059\u308B:
84413
84423
  - \`method\`: \`"GET"\`
84414
84424
  - \`path\`: \`"/me"\`
84415
84425
  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 +85903,7 @@ var parameters61 = {
85893
85903
  organizationSlug: new ParameterDefinition({
85894
85904
  slug: "organization-slug",
85895
85905
  name: "Sentry Organization Slug",
85896
- description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://sentry.io/organizations/{slug}/",
85906
+ description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://{slug}.sentry.io/",
85897
85907
  envVarBaseKey: "SENTRY_ORGANIZATION_SLUG",
85898
85908
  type: "text",
85899
85909
  secret: false,
@@ -86599,11 +86609,11 @@ var influxdbOnboarding = new ConnectorOnboarding({
86599
86609
 
86600
86610
  #### Confirm the Database (or Bucket) Name
86601
86611
  - InfluxDB 3: use the database name
86602
- - InfluxDB 2: use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
86612
+ - InfluxDB 2 (includes InfluxDB Cloud on \`*.cloud2.influxdata.com\`): use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
86603
86613
 
86604
- #### Organization (InfluxDB 2 only)
86605
- - If you are on InfluxDB 2, set the Organization parameter to the org that owns the bucket
86606
- - For InfluxDB 3 Cloud you can leave Organization blank`,
86614
+ #### Organization
86615
+ - InfluxDB 2: set the Organization parameter to the org that owns the bucket (required for Flux queries and writes)
86616
+ - InfluxDB 3 Cloud Serverless: you can leave Organization blank when only using SQL`,
86607
86617
  ja: `#### API \u30C8\u30FC\u30AF\u30F3\u306E\u767A\u884C
86608
86618
  1. InfluxDB Cloud / OSS \u306B\u30B5\u30A4\u30F3\u30A4\u30F3
86609
86619
  2. Load Data \u2192 API Tokens \u2192 Generate API Token
@@ -86612,19 +86622,37 @@ var influxdbOnboarding = new ConnectorOnboarding({
86612
86622
 
86613
86623
  #### Database (\u307E\u305F\u306F Bucket) \u540D\u306E\u78BA\u8A8D
86614
86624
  - 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
86625
+ - 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
86626
 
86617
- #### Organization\uFF08InfluxDB 2 \u306E\u307F\uFF09
86618
- - InfluxDB 2 \u306E\u5834\u5408\u3001bucket \u3092\u4FDD\u6709\u3059\u308B\u7D44\u7E54\u540D\u3092 Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8A2D\u5B9A
86619
- - InfluxDB 3 Cloud \u306E\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
86627
+ #### Organization
86628
+ - 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
86629
+ - InfluxDB 3 Cloud Serverless: SQL \u306E\u307F\u3092\u4F7F\u3046\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
86620
86630
  },
86621
86631
  dataOverviewInstructions: {
86622
- en: `1. For InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
86623
- 2. For InfluxDB 3: inspect a sample measurement with POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" }
86624
- 3. For InfluxDB 2: call influxdb_request with POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'buckets()' to list buckets, then 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' to inspect data`,
86625
- ja: `1. InfluxDB 3 \u306E\u5834\u5408: influxdb_request \u3067 POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SHOW TABLES" } \u3092\u5B9F\u884C\u3057 measurement \u4E00\u89A7\u3092\u53D6\u5F97
86626
- 2. InfluxDB 3 \u306E\u5834\u5408: POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" } \u3067\u4EE3\u8868\u7684\u306A measurement \u306E\u69CB\u9020\u3092\u78BA\u8A8D
86627
- 3. InfluxDB 2 \u306E\u5834\u5408: POST /api/v2/query?org=<org>\u3001contentType 'application/vnd.flux'\u3001body 'buckets()' \u3067 bucket \u4E00\u89A7\u3092\u53D6\u5F97\u3057\u3001\u7D9A\u3044\u3066 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' \u3067\u30C7\u30FC\u30BF\u3092\u78BA\u8A8D`
86632
+ 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.
86633
+
86634
+ 1. Probe for InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT 1" }
86635
+ - 200 with JSON rows \u2192 InfluxDB 3. Continue with SQL.
86636
+ - 405 Method Not Allowed, or an HTML body like "<html>...405 Not Allowed..." \u2192 InfluxDB 2. Fall back to Flux (step 3).
86637
+ 2. InfluxDB 3 data overview:
86638
+ a. POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
86639
+ b. POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" } to inspect a sample
86640
+ 3. InfluxDB 2 data overview (Organization parameter required):
86641
+ a. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'buckets()' to list buckets
86642
+ b. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' to inspect data
86643
+ - If the Organization parameter was not provided but v3 probing failed, ask the user to set it using updateConnectionParameters before continuing.`,
86644
+ 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
86645
+
86646
+ 1. InfluxDB 3 \u306E\u5224\u5225: influxdb_request \u3067 POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SELECT 1" } \u3092\u5B9F\u884C
86647
+ - 200 + JSON \u884C\u304C\u8FD4\u308B \u2192 InfluxDB 3\u3002\u305D\u306E\u307E\u307E SQL \u3067\u7D9A\u884C\u3002
86648
+ - 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
86649
+ 2. InfluxDB 3 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981:
86650
+ a. POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SHOW TABLES" } \u3067 measurement \u4E00\u89A7\u3092\u53D6\u5F97
86651
+ 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
86652
+ 3. InfluxDB 2 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981\uFF08Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u5FC5\u9808\uFF09:
86653
+ a. POST /api/v2/query?org=<org>\u3001contentType 'application/vnd.flux'\u3001body 'buckets()' \u3067 bucket \u4E00\u89A7\u3092\u53D6\u5F97
86654
+ 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
86655
+ - 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
86656
  }
86629
86657
  });
86630
86658
 
@@ -86633,7 +86661,7 @@ var parameters63 = {
86633
86661
  url: new ParameterDefinition({
86634
86662
  slug: "url",
86635
86663
  name: "InfluxDB URL",
86636
- description: "The base URL of your InfluxDB instance (e.g., 'https://us-east-1-1.aws.cloud2.influxdata.com' for InfluxDB Cloud). Do not include a trailing slash.",
86664
+ 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
86665
  envVarBaseKey: "INFLUXDB_URL",
86638
86666
  type: "text",
86639
86667
  secret: false,
@@ -86660,7 +86688,7 @@ var parameters63 = {
86660
86688
  org: new ParameterDefinition({
86661
86689
  slug: "org",
86662
86690
  name: "Organization",
86663
- description: "The InfluxDB organization name. Required for InfluxDB 2.x Flux queries and writes; optional for InfluxDB 3.",
86691
+ 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
86692
  envVarBaseKey: "INFLUXDB_ORG",
86665
86693
  type: "text",
86666
86694
  secret: false,
@@ -86752,10 +86780,17 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
86752
86780
  }
86753
86781
  if (!response.ok) {
86754
86782
  let errorMessage = `HTTP ${response.status} ${response.statusText}`;
86783
+ const bodyText = typeof data === "string" ? data : void 0;
86784
+ const isHtml = resContentType.includes("text/html") || bodyText !== void 0 && bodyText.trimStart().startsWith("<");
86755
86785
  if (data && typeof data === "object" && !Array.isArray(data) && typeof data.message === "string") {
86756
86786
  errorMessage = data.message;
86757
- } else if (typeof data === "string" && data) {
86758
- errorMessage = data;
86787
+ } else if (bodyText) {
86788
+ errorMessage = isHtml ? bodyText.replace(/\s+/g, " ").slice(0, 200) : bodyText;
86789
+ }
86790
+ const hitsV3Path = path5.includes("/api/v3/");
86791
+ const looksLikeMissingV3 = hitsV3Path && (response.status === 405 || response.status === 404 || isHtml);
86792
+ if (looksLikeMissingV3) {
86793
+ 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
86794
  }
86760
86795
  return { success: false, error: errorMessage };
86761
86796
  }
@@ -86777,14 +86812,22 @@ var influxdbConnector = new ConnectorPlugin({
86777
86812
  authType: AUTH_TYPES.API_KEY,
86778
86813
  name: "InfluxDB",
86779
86814
  description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
86780
- iconUrl: "https://upload.wikimedia.org/wikipedia/commons/b/b2/Influxdb_logo.svg",
86815
+ iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/J1JauVRNmahSVTVrpPfQK/18350d8d3f2dc3be25e8e36ee52914a0/influxdb.png",
86781
86816
  parameters: parameters63,
86782
86817
  releaseFlag: { dev1: true, dev2: false, prod: false },
86783
86818
  onboarding: influxdbOnboarding,
86784
86819
  systemPrompt: {
86785
- en: `### Tools
86820
+ en: `### Variant Detection
86821
+
86822
+ 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:
86823
+
86824
+ 1. Call \`influxdb_request\` POST \`/api/v3/query_sql\` with body \`{ "db": "<database>", "q": "SELECT 1" }\`
86825
+ 2. 200 + JSON rows \u2192 InfluxDB 3. Use SQL endpoints.
86826
+ 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\`.
86786
86827
 
86787
- - \`influxdb_request\`: The only way to call the InfluxDB HTTP API. Use it to run SQL / InfluxQL / Flux queries, write line protocol, and inspect buckets / databases. Authentication (\`Authorization: Token {token}\`) and the instance URL are configured automatically. For InfluxDB 3 prefer SQL (\`POST /api/v3/query_sql\`) \u2014 it returns JSON rows that are directly usable. For InfluxDB 2 use Flux (\`POST /api/v2/query?org={org}\`) \u2014 the response is annotated CSV. Writes use \`POST /api/v3/write_lp?db={db}\` (v3) or \`POST /api/v2/write?org={org}&bucket={bucket}\` (v2) with a line-protocol body and \`contentType\` set to \`text/plain; charset=utf-8\`.
86828
+ ### Tools
86829
+
86830
+ - \`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
86831
 
86789
86832
  ### Business Logic
86790
86833
 
@@ -86845,7 +86888,15 @@ export default async function handler(c: Context) {
86845
86888
  - Time filtering uses standard SQL \`time\` column comparisons (\`time >= now() - INTERVAL '...' \`)
86846
86889
  - Aggregates: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`; bucket time with \`date_bin('5 minutes', time)\`
86847
86890
  - List measurements: \`SHOW TABLES\`; list columns: \`SHOW COLUMNS FROM <measurement>\``,
86848
- ja: `### \u30C4\u30FC\u30EB
86891
+ ja: `### \u30D0\u30EA\u30A2\u30F3\u30C8\u5224\u5225
86892
+
86893
+ \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:
86894
+
86895
+ 1. \`influxdb_request\` \u3067 POST \`/api/v3/query_sql\`\u3001body \`{ "db": "<database>", "q": "SELECT 1" }\` \u3092\u547C\u3073\u51FA\u3059
86896
+ 2. 200 + JSON \u884C \u2192 InfluxDB 3\u3002SQL \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u4F7F\u7528\u3002
86897
+ 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
86898
+
86899
+ ### \u30C4\u30FC\u30EB
86849
86900
 
86850
86901
  - \`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
86902
 
@@ -86909,7 +86960,47 @@ export default async function handler(c: Context) {
86909
86960
  - \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
86910
86961
  - measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
86911
86962
  },
86912
- tools: tools63
86963
+ tools: tools63,
86964
+ async checkConnection(params) {
86965
+ const url = (params.url ?? "").replace(/\/$/, "");
86966
+ const token = params.token;
86967
+ if (!url) {
86968
+ return { success: false, error: "InfluxDB URL is not configured" };
86969
+ }
86970
+ if (!token) {
86971
+ return { success: false, error: "API Token is not configured" };
86972
+ }
86973
+ try {
86974
+ const res = await fetch(`${url}/api/v2/orgs`, {
86975
+ method: "GET",
86976
+ headers: {
86977
+ Authorization: `Token ${token}`,
86978
+ Accept: "application/json"
86979
+ }
86980
+ });
86981
+ if (res.status === 401 || res.status === 403) {
86982
+ return {
86983
+ success: false,
86984
+ error: `Authentication failed (HTTP ${res.status}). Check the API token and its permissions.`
86985
+ };
86986
+ }
86987
+ if (!res.ok) {
86988
+ const body = await res.text().catch(() => res.statusText);
86989
+ const snippet = body.replace(/\s+/g, " ").slice(0, 200);
86990
+ return {
86991
+ success: false,
86992
+ error: `Connection check failed: HTTP ${res.status} ${res.statusText} \u2014 ${snippet}`
86993
+ };
86994
+ }
86995
+ return { success: true };
86996
+ } catch (error2) {
86997
+ const message = error2 instanceof Error ? error2.message : String(error2);
86998
+ return {
86999
+ success: false,
87000
+ error: `Failed to reach InfluxDB at ${url}: ${message}`
87001
+ };
87002
+ }
87003
+ }
86913
87004
  });
86914
87005
 
86915
87006
  // ../connectors/src/connectors/registry.ts