@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.
@@ -72670,19 +72670,6 @@ await drive.updateFile("fileId123", {}, "newFolderId", "oldFolderId");
72670
72670
  }
72671
72671
  });
72672
72672
 
72673
- // ../connectors/src/connectors/google-sheets/setup.ts
72674
- var googleSheetsOnboarding = new ConnectorOnboarding({
72675
- dataOverviewInstructions: {
72676
- en: `1. Create a new spreadsheet with google-sheets-oauth_request (POST with body { properties: { title: "..." } }) or use an existing spreadsheet ID.
72677
- 2. Call google-sheets-oauth_request with GET /{spreadsheetId} to fetch spreadsheet metadata (sheet names and properties).`,
72678
- ja: `1. google-sheets-oauth_request \u3092 POST\uFF08Body: { properties: { title: "..." } }\uFF09\u3067\u547C\u3073\u51FA\u3057\u3066\u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210\u3059\u308B\u304B\u3001\u65E2\u5B58\u306E\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u3092\u5229\u7528\u3057\u307E\u3059\u3002
72679
- 2. google-sheets-oauth_request \u3067 GET /{spreadsheetId} \u3092\u547C\u3073\u51FA\u3057\u3001\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\uFF08\u30B7\u30FC\u30C8\u540D\u3068\u30D7\u30ED\u30D1\u30C6\u30A3\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002`
72680
- }
72681
- });
72682
-
72683
- // ../connectors/src/connectors/google-sheets/parameters.ts
72684
- var parameters18 = {};
72685
-
72686
72673
  // ../connectors/src/connectors/google-sheets/tools/request.ts
72687
72674
  import { z as z27 } from "zod";
72688
72675
  var SHEETS_BASE_URL = "https://sheets.googleapis.com/v4/spreadsheets";
@@ -72723,11 +72710,10 @@ var inputSchema27 = z27.object({
72723
72710
  "Brief description of what you intend to accomplish with this tool call"
72724
72711
  ),
72725
72712
  connectionId: z27.string().describe("ID of the Google Sheets connection to use"),
72726
- method: z27.enum(["GET", "POST", "PUT"]).describe("HTTP method"),
72713
+ method: z27.enum(["GET"]).describe("HTTP method. Only GET is supported (read-only analysis)."),
72727
72714
  path: z27.string().describe(
72728
- "API path appended to https://sheets.googleapis.com/v4/spreadsheets (e.g., '', '/{spreadsheetId}', '/{spreadsheetId}/values/Sheet1!A1:D10')."
72715
+ "API path appended to https://sheets.googleapis.com/v4/spreadsheets (e.g., '/{spreadsheetId}', '/{spreadsheetId}/values/Sheet1!A1:D10'). The `{spreadsheetId}` placeholder is automatically replaced with the connection's configured spreadsheet ID."
72729
72716
  ),
72730
- body: z27.record(z27.string(), z27.unknown()).optional().describe("JSON request body for POST/PUT requests"),
72731
72717
  queryParams: z27.record(z27.string(), z27.string()).optional().describe("Query parameters to append to the URL")
72732
72718
  });
72733
72719
  var outputSchema27 = z27.discriminatedUnion("success", [
@@ -72743,12 +72729,12 @@ var outputSchema27 = z27.discriminatedUnion("success", [
72743
72729
  ]);
72744
72730
  var requestTool9 = new ConnectorTool({
72745
72731
  name: "request",
72746
- description: `Send authenticated requests to the Google Sheets API v4.
72747
- Supports GET (read), POST (create/append), and PUT (update) methods.
72732
+ description: `Send authenticated GET requests to the Google Sheets API v4 for read-only analysis.
72733
+ The \`{spreadsheetId}\` placeholder in the path is automatically replaced with the connection's configured spreadsheet ID.
72748
72734
  Authentication is handled automatically via OAuth proxy.`,
72749
72735
  inputSchema: inputSchema27,
72750
72736
  outputSchema: outputSchema27,
72751
- async execute({ connectionId, method, path: path4, body, queryParams }, connections, config) {
72737
+ async execute({ connectionId, method, path: path4, queryParams }, connections, config) {
72752
72738
  const connection = connections.find((c6) => c6.id === connectionId);
72753
72739
  if (!connection) {
72754
72740
  return {
@@ -72778,8 +72764,7 @@ Authentication is handled automatically via OAuth proxy.`,
72778
72764
  },
72779
72765
  body: JSON.stringify({
72780
72766
  url,
72781
- method,
72782
- ...body != null ? { body: JSON.stringify(body) } : {}
72767
+ method
72783
72768
  }),
72784
72769
  signal: controller.signal
72785
72770
  });
@@ -72799,13 +72784,69 @@ Authentication is handled automatically via OAuth proxy.`,
72799
72784
  }
72800
72785
  });
72801
72786
 
72787
+ // ../connectors/src/connectors/google-sheets/setup.ts
72788
+ var requestToolName = `google-sheets-oauth_${requestTool9.name}`;
72789
+ var googleSheetsOnboarding = new ConnectorOnboarding({
72790
+ connectionSetupInstructions: {
72791
+ 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
72792
+
72793
+ 1. \`askUserQuestion\` \u3067\u5206\u6790\u5BFE\u8C61\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306EURL\u3092\u30D2\u30A2\u30EA\u30F3\u30B0\u3059\u308B:
72794
+ - \`type\`: \`"freeText"\`
72795
+ - \`question\`: \u300C\u5206\u6790\u3057\u305F\u3044Google Sheets\u306EURL\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u300D
72796
+ - \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
72797
+ 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
72798
+ 3. \u62BD\u51FA\u3057\u305FID\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
72799
+ - \`parameterSlug\`: \`"spreadsheet-id"\`
72800
+ - \`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
72801
+ 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:
72802
+ - \`method\`: \`"GET"\`
72803
+ - \`path\`: \`"/{spreadsheetId}"\`
72804
+ 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:
72805
+ - 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
72806
+ - \u5165\u529B\u3055\u308C\u305FURL\u304C\u6B63\u3057\u3044\u304B
72807
+
72808
+ #### \u5236\u7D04
72809
+ - **\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
72810
+ - \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`,
72811
+ 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).
72812
+
72813
+ 1. Call \`askUserQuestion\` to ask for the spreadsheet URL to analyze:
72814
+ - \`type\`: \`"freeText"\`
72815
+ - \`question\`: "Please paste the URL of the Google Sheet you want to analyze"
72816
+ - \`placeholder\`: \`"https://docs.google.com/spreadsheets/d/.../edit"\`
72817
+ 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.
72818
+ 3. Save the extracted ID via \`updateConnectionParameters\`:
72819
+ - \`parameterSlug\`: \`"spreadsheet-id"\`
72820
+ - \`options\`: \`[{ value: <extracted ID>, label: <same value> }]\` (a single option is auto-selected)
72821
+ 4. Verify access by calling \`${requestToolName}\`:
72822
+ - \`method\`: \`"GET"\`
72823
+ - \`path\`: \`"/{spreadsheetId}"\`
72824
+ 5. If an error is returned, ask the user to verify:
72825
+ - The OAuthed Google account has read access to the spreadsheet
72826
+ - The URL they entered is correct
72827
+
72828
+ #### Constraints
72829
+ - **Do NOT read large amounts of cell data during setup**. Only the metadata request specified above is allowed
72830
+ - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
72831
+ },
72832
+ dataOverviewInstructions: {
72833
+ en: `1. Call ${requestToolName} with GET /{spreadsheetId} to fetch spreadsheet metadata (sheet names, grid properties)
72834
+ 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`,
72835
+ 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
72836
+ 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`
72837
+ }
72838
+ });
72839
+
72840
+ // ../connectors/src/connectors/google-sheets/parameters.ts
72841
+ var parameters18 = {};
72842
+
72802
72843
  // ../connectors/src/connectors/google-sheets/index.ts
72803
72844
  var tools18 = { request: requestTool9 };
72804
72845
  var googleSheetsConnector = new ConnectorPlugin({
72805
72846
  slug: "google-sheets",
72806
72847
  authType: AUTH_TYPES.OAUTH,
72807
72848
  name: "Google Sheets",
72808
- description: "Connect to Google Sheets for spreadsheet data access and creation using OAuth.",
72849
+ description: "Connect to an existing Google Sheets spreadsheet for read-only data analysis using OAuth.",
72809
72850
  iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/1UPQuggyiZmbb26CuaSr2h/032770e8739b183fa00b7625f024e536/google-sheets.svg",
72810
72851
  parameters: parameters18,
72811
72852
  releaseFlag: { dev1: true, dev2: false, prod: false },
@@ -72814,30 +72855,25 @@ var googleSheetsConnector = new ConnectorPlugin({
72814
72855
  allowlist: [
72815
72856
  {
72816
72857
  host: "sheets.googleapis.com",
72817
- methods: ["GET", "POST", "PUT"]
72858
+ methods: ["GET"]
72818
72859
  }
72819
72860
  ]
72820
72861
  },
72821
72862
  systemPrompt: {
72822
72863
  en: `### Tools (setup-time only)
72823
72864
 
72824
- - \`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.
72865
+ - \`google-sheets-oauth_request\`: Call the Google Sheets API during setup / data overview. Read-only (GET only). Use it to fetch spreadsheet metadata and sample cell values. The \`{spreadsheetId}\` placeholder in the path is automatically replaced with the spreadsheet configured at setup time. Authentication is configured automatically via OAuth.
72825
72866
 
72826
72867
  > **Important**: The \`google-sheets-oauth_request\` tool is only available at setup time. Inside server-logic handlers, use the SDK (\`connection(id).getValues\`, etc.) \u2014 the SDK's fetch is already wired through the OAuth proxy. **Do NOT** hand-roll HTTP calls to \`_sqcore/connections/*/request\` from a handler.
72827
72868
 
72828
- ### Google Sheets API Reference
72869
+ > **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\`.
72870
+
72871
+ ### Google Sheets API Reference (read-only)
72829
72872
 
72830
- #### Read Endpoints
72831
72873
  - GET \`/{spreadsheetId}\` \u2014 Get spreadsheet metadata (title, sheets, properties)
72832
72874
  - GET \`/{spreadsheetId}/values/{range}\` \u2014 Get cell values for a range
72833
72875
  - GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 Get values for multiple ranges
72834
72876
 
72835
- #### Write Endpoints
72836
- - POST \`\` (empty path, with body) \u2014 Create a new spreadsheet. Body: \`{ "properties": { "title": "My Sheet" }, "sheets": [{ "properties": { "title": "Sheet1" } }] }\`
72837
- - PUT \`/{spreadsheetId}/values/{range}?valueInputOption=USER_ENTERED\` \u2014 Update cell values for a range. Body: \`{ "range": "Sheet1!A1:B2", "majorDimension": "ROWS", "values": [["a","b"],["c","d"]] }\`
72838
- - POST \`/{spreadsheetId}/values/{range}:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS\` \u2014 Append rows after the last row. Body: \`{ "range": "Sheet1!A1", "majorDimension": "ROWS", "values": [["a","b"]] }\`
72839
- - POST \`/{spreadsheetId}:batchUpdate\` \u2014 Apply multiple updates (formatting, add sheets, merge cells, etc.). Body: \`{ "requests": [...] }\`
72840
-
72841
72877
  ### Range Notation (A1 notation)
72842
72878
  - \`Sheet1!A1:D10\` \u2014 Specific range on Sheet1
72843
72879
  - \`Sheet1!A:A\` \u2014 Entire column A on Sheet1
@@ -72850,21 +72886,17 @@ var googleSheetsConnector = new ConnectorPlugin({
72850
72886
  - Use \`valueRenderOption=FORMATTED_VALUE\` query param to get display values
72851
72887
  - Use \`valueRenderOption=UNFORMATTED_VALUE\` for raw numeric values
72852
72888
  - Use \`majorDimension=COLUMNS\` to get data organized by columns instead of rows
72853
- - For write operations, always use \`valueInputOption=USER_ENTERED\` so values are parsed as if typed by a user (dates, numbers, formulas are auto-detected)
72854
- - Sharing (permissions) cannot be done via this connector; only the OAuth user has access to the created spreadsheets
72855
72889
 
72856
72890
  ### Business Logic
72857
72891
 
72858
- The business logic type for this connector is "typescript". Write handler code using the connector SDK shown below. Do NOT access credentials directly from environment variables and do NOT read \`INTERNAL_SQUADBASE_*\` env vars \u2014 the SDK takes care of OAuth.
72892
+ The business logic type for this connector is "typescript". Write handler code using the connector SDK shown below. Do NOT access credentials directly from environment variables and do NOT read \`INTERNAL_SQUADBASE_*\` env vars \u2014 the SDK takes care of OAuth. The spreadsheet ID is bound to the connection at setup time; do NOT ask handler callers to pass it.
72859
72893
 
72860
72894
  SDK surface (client created via \`connection(connectionId)\`):
72861
- - \`client.request(path, init?)\` \u2014 low-level authenticated fetch (\`path\` is appended to \`https://sheets.googleapis.com/v4/spreadsheets\`).
72862
- - \`client.getSpreadsheet(spreadsheetId)\` \u2014 fetch spreadsheet metadata.
72863
- - \`client.getValues(spreadsheetId, range)\` \u2014 read a range (A1 notation).
72864
- - \`client.batchGetValues(spreadsheetId, ranges)\` \u2014 read multiple ranges.
72865
- - \`client.updateValues(spreadsheetId, range, values)\` \u2014 write values to a range.
72866
- - \`client.appendValues(spreadsheetId, range, values)\` \u2014 append rows after the last row.
72867
- - \`client.createSpreadsheet(title, sheetNames?)\` \u2014 create a new spreadsheet.
72895
+ - \`client.spreadsheetId\` \u2014 the spreadsheet ID configured for this connection.
72896
+ - \`client.request(path, init?)\` \u2014 low-level authenticated fetch (\`path\` is appended to \`https://sheets.googleapis.com/v4/spreadsheets\`; \`{spreadsheetId}\` is auto-replaced).
72897
+ - \`client.getSpreadsheet()\` \u2014 fetch spreadsheet metadata for the configured spreadsheet.
72898
+ - \`client.getValues(range)\` \u2014 read a range (A1 notation) from the configured spreadsheet.
72899
+ - \`client.batchGetValues(ranges)\` \u2014 read multiple ranges from the configured spreadsheet.
72868
72900
 
72869
72901
  If a handler test fails with \`Connection proxy is not configured\`, retry \u2014 the sandbox is still initializing. Do NOT abandon the SDK and construct OAuth proxy URLs manually.
72870
72902
 
@@ -72875,43 +72907,31 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
72875
72907
 
72876
72908
  const sheets = connection("<connectionId>");
72877
72909
 
72878
- // Create a new spreadsheet
72879
- const newSheet = await sheets.createSpreadsheet("Sales Report", ["Q1", "Q2", "Q3", "Q4"]);
72880
- const spreadsheetId = newSheet.spreadsheetId;
72881
-
72882
- // Get spreadsheet metadata
72883
- const metadata = await sheets.getSpreadsheet(spreadsheetId);
72910
+ // Get metadata for the configured spreadsheet
72911
+ const metadata = await sheets.getSpreadsheet();
72884
72912
  console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
72885
72913
 
72886
72914
  // Get cell values
72887
- const values = await sheets.getValues(spreadsheetId, "Sheet1!A1:D10");
72915
+ const values = await sheets.getValues("Sheet1!A1:D10");
72888
72916
  console.log(values.values); // 2D array
72889
72917
 
72890
- // Update cell values
72891
- await sheets.updateValues(spreadsheetId, "Sheet1!A1:B2", [["Name", "Score"], ["Alice", "100"]]);
72892
-
72893
- // Append rows
72894
- await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
72918
+ // Batch-get multiple ranges
72919
+ const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
72895
72920
  \`\`\``,
72896
72921
  ja: `### \u30C4\u30FC\u30EB\uFF08\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306E\u307F\uFF09
72897
72922
 
72898
- - \`google-sheets-oauth_request\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3084\u30C7\u30FC\u30BF\u6982\u8981\u628A\u63E1\u6642\u306B Google Sheets API \u3092\u547C\u3073\u51FA\u3059\u30C4\u30FC\u30EB\u3067\u3059\u3002\u8AAD\u307F\u53D6\u308A\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
72923
+ - \`google-sheets-oauth_request\`: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3084\u30C7\u30FC\u30BF\u6982\u8981\u628A\u63E1\u6642\u306B Google Sheets API \u3092\u547C\u3073\u51FA\u3059\u30C4\u30FC\u30EB\u3067\u3059\u3002\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF08GET \u306E\u307F\uFF09\u3067\u3059\u3002\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u53D6\u5F97\u3084\u30BB\u30EB\u5024\u306E\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u30D1\u30B9\u5185\u306E \`{spreadsheetId}\` \u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306B\u6307\u5B9A\u3055\u308C\u305F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u306B\u81EA\u52D5\u7684\u306B\u7F6E\u63DB\u3055\u308C\u307E\u3059\u3002OAuth \u7D4C\u7531\u3067\u8A8D\u8A3C\u306F\u81EA\u52D5\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
72899
72924
 
72900
72925
  > **\u91CD\u8981**: \`google-sheets-oauth_request\` \u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306E\u307F\u5229\u7528\u53EF\u80FD\u3067\u3059\u3002\u30B5\u30FC\u30D0\u30FC\u30ED\u30B8\u30C3\u30AF\u306E\u30CF\u30F3\u30C9\u30E9\u5185\u3067\u306F\u5FC5\u305A SDK\uFF08\`connection(id).getValues\` \u306A\u3069\uFF09\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002SDK \u306E fetch \u306F OAuth \u30D7\u30ED\u30AD\u30B7\u7D4C\u7531\u3067\u65E2\u306B\u914D\u7DDA\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30CF\u30F3\u30C9\u30E9\u304B\u3089 \`_sqcore/connections/*/request\` \u3092\u624B\u66F8\u304D\u3067\u547C\u3073\u51FA\u3055\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
72901
72926
 
72902
- ### Google Sheets API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
72927
+ > **\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
72928
+
72929
+ ### Google Sheets API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\uFF08\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF09
72903
72930
 
72904
- #### \u8AAD\u307F\u53D6\u308A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
72905
72931
  - GET \`/{spreadsheetId}\` \u2014 \u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\uFF08\u30BF\u30A4\u30C8\u30EB\u3001\u30B7\u30FC\u30C8\u3001\u30D7\u30ED\u30D1\u30C6\u30A3\uFF09
72906
72932
  - GET \`/{spreadsheetId}/values/{range}\` \u2014 \u7BC4\u56F2\u306E\u30BB\u30EB\u5024\u3092\u53D6\u5F97
72907
72933
  - GET \`/{spreadsheetId}/values:batchGet?ranges={range1}&ranges={range2}\` \u2014 \u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97
72908
72934
 
72909
- #### \u66F8\u304D\u8FBC\u307F\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
72910
- - POST \`\`\uFF08\u7A7A\u30D1\u30B9\u3001\u30DC\u30C7\u30A3\u4ED8\u304D\uFF09\u2014 \u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210\u3002Body: \`{ "properties": { "title": "\u30DE\u30A4\u30B7\u30FC\u30C8" }, "sheets": [{ "properties": { "title": "Sheet1" } }] }\`
72911
- - PUT \`/{spreadsheetId}/values/{range}?valueInputOption=USER_ENTERED\` \u2014 \u7BC4\u56F2\u306E\u30BB\u30EB\u5024\u3092\u66F4\u65B0\u3002Body: \`{ "range": "Sheet1!A1:B2", "majorDimension": "ROWS", "values": [["a","b"],["c","d"]] }\`
72912
- - POST \`/{spreadsheetId}/values/{range}:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS\` \u2014 \u6700\u7D42\u884C\u306E\u5F8C\u306B\u884C\u3092\u8FFD\u52A0\u3002Body: \`{ "range": "Sheet1!A1", "majorDimension": "ROWS", "values": [["a","b"]] }\`
72913
- - POST \`/{spreadsheetId}:batchUpdate\` \u2014 \u8907\u6570\u306E\u66F4\u65B0\u3092\u9069\u7528\uFF08\u66F8\u5F0F\u8A2D\u5B9A\u3001\u30B7\u30FC\u30C8\u8FFD\u52A0\u3001\u30BB\u30EB\u7D50\u5408\u306A\u3069\uFF09\u3002Body: \`{ "requests": [...] }\`
72914
-
72915
72935
  ### \u7BC4\u56F2\u306E\u8868\u8A18\u6CD5\uFF08A1\u8868\u8A18\u6CD5\uFF09
72916
72936
  - \`Sheet1!A1:D10\` \u2014 Sheet1\u4E0A\u306E\u7279\u5B9A\u7BC4\u56F2
72917
72937
  - \`Sheet1!A:A\` \u2014 Sheet1\u306EA\u5217\u5168\u4F53
@@ -72924,21 +72944,17 @@ await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie"
72924
72944
  - \u8868\u793A\u5024\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`valueRenderOption=FORMATTED_VALUE\` \u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u307E\u3059
72925
72945
  - \u751F\u306E\u6570\u5024\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`valueRenderOption=UNFORMATTED_VALUE\` \u3092\u4F7F\u7528\u3057\u307E\u3059
72926
72946
  - \u5217\u3054\u3068\u306B\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3059\u308B\u306B\u306F \`majorDimension=COLUMNS\` \u3092\u4F7F\u7528\u3057\u307E\u3059
72927
- - \u66F8\u304D\u8FBC\u307F\u64CD\u4F5C\u3067\u306F\u5E38\u306B \`valueInputOption=USER_ENTERED\` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u5024\u304C\u30E6\u30FC\u30B6\u30FC\u5165\u529B\u306E\u3088\u3046\u306B\u89E3\u6790\u3055\u308C\u307E\u3059\uFF08\u65E5\u4ED8\u3001\u6570\u5024\u3001\u6570\u5F0F\u304C\u81EA\u52D5\u691C\u51FA\uFF09
72928
- - \u5171\u6709\uFF08permissions\uFF09\u306F\u3053\u306E\u30B3\u30CD\u30AF\u30BF\u7D4C\u7531\u3067\u306F\u884C\u3048\u307E\u305B\u3093\u3002\u4F5C\u6210\u3057\u305F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3078\u306F\u63A5\u7D9A\u3057\u305FOAuth\u30E6\u30FC\u30B6\u30FC\u306E\u307F\u304C\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059
72929
72947
 
72930
72948
  ### Business Logic
72931
72949
 
72932
- \u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u4EE5\u4E0B\u306B\u793A\u3059\u30B3\u30CD\u30AF\u30BF SDK \u3092\u4F7F\u7528\u3057\u3066\u30CF\u30F3\u30C9\u30E9\u30B3\u30FC\u30C9\u3092\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u76F4\u63A5\u8A8D\u8A3C\u60C5\u5831\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\`INTERNAL_SQUADBASE_*\` \u306E\u74B0\u5883\u5909\u6570\u3092\u4F7F\u3063\u3066\u624B\u52D5\u3067 OAuth \u30D7\u30ED\u30AD\u30B7\u3092\u53E9\u304F\u3053\u3068\u3082\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044 \u2014 SDK \u304C OAuth \u3092\u51E6\u7406\u3057\u307E\u3059\u3002
72950
+ \u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u4EE5\u4E0B\u306B\u793A\u3059\u30B3\u30CD\u30AF\u30BF SDK \u3092\u4F7F\u7528\u3057\u3066\u30CF\u30F3\u30C9\u30E9\u30B3\u30FC\u30C9\u3092\u8A18\u8FF0\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u76F4\u63A5\u8A8D\u8A3C\u60C5\u5831\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\`INTERNAL_SQUADBASE_*\` \u306E\u74B0\u5883\u5909\u6570\u3092\u4F7F\u3063\u3066\u624B\u52D5\u3067 OAuth \u30D7\u30ED\u30AD\u30B7\u3092\u53E9\u304F\u3053\u3068\u3082\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044 \u2014 SDK \u304C OAuth \u3092\u51E6\u7406\u3057\u307E\u3059\u3002\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8ID\u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u6642\u306B\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306B\u7D10\u3065\u3051\u3089\u308C\u3066\u3044\u308B\u306E\u3067\u3001\u30CF\u30F3\u30C9\u30E9\u306E\u547C\u3073\u51FA\u3057\u5143\u306B\u6E21\u3055\u305B\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
72933
72951
 
72934
72952
  SDK\uFF08\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\uFF09:
72935
- - \`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
72936
- - \`client.getSpreadsheet(spreadsheetId)\` \u2014 \u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3002
72937
- - \`client.getValues(spreadsheetId, range)\` \u2014 \u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97\uFF08A1 \u8868\u8A18\uFF09\u3002
72938
- - \`client.batchGetValues(spreadsheetId, ranges)\` \u2014 \u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97\u3002
72939
- - \`client.updateValues(spreadsheetId, range, values)\` \u2014 \u7BC4\u56F2\u306B\u5024\u3092\u66F8\u304D\u8FBC\u307F\u3002
72940
- - \`client.appendValues(spreadsheetId, range, values)\` \u2014 \u6700\u7D42\u884C\u306E\u5F8C\u306B\u884C\u3092\u8FFD\u52A0\u3002
72941
- - \`client.createSpreadsheet(title, sheetNames?)\` \u2014 \u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210\u3002
72953
+ - \`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
72954
+ - \`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
72955
+ - \`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
72956
+ - \`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
72957
+ - \`client.batchGetValues(ranges)\` \u2014 \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u8907\u6570\u7BC4\u56F2\u306E\u5024\u3092\u53D6\u5F97\u3002
72942
72958
 
72943
72959
  \u30CF\u30F3\u30C9\u30E9\u306E\u30C6\u30B9\u30C8\u304C \`Connection proxy is not configured\` \u3067\u5931\u6557\u3059\u308B\u5834\u5408\u306F\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u901A\u5E38\u306F\u30B5\u30F3\u30C9\u30DC\u30C3\u30AF\u30B9\u306E\u521D\u671F\u5316\u4E2D\u306B\u8D77\u304D\u307E\u3059\u3002SDK \u3092\u8AE6\u3081\u3066 OAuth \u30D7\u30ED\u30AD\u30B7\u306E URL \u3092\u81EA\u5206\u3067\u7D44\u307F\u7ACB\u3066\u308B\u3053\u3068\u306F **\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044**\u3002
72944
72960
 
@@ -72949,23 +72965,16 @@ import { connection } from "@squadbase/vite-server/connectors/google-sheets";
72949
72965
 
72950
72966
  const sheets = connection("<connectionId>");
72951
72967
 
72952
- // \u65B0\u3057\u3044\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u3092\u4F5C\u6210
72953
- const newSheet = await sheets.createSpreadsheet("\u58F2\u4E0A\u30EC\u30DD\u30FC\u30C8", ["Q1", "Q2", "Q3", "Q4"]);
72954
- const spreadsheetId = newSheet.spreadsheetId;
72955
-
72956
- // \u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
72957
- const metadata = await sheets.getSpreadsheet(spreadsheetId);
72968
+ // \u8A2D\u5B9A\u6E08\u307F\u30B9\u30D7\u30EC\u30C3\u30C9\u30B7\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97
72969
+ const metadata = await sheets.getSpreadsheet();
72958
72970
  console.log(metadata.properties.title, metadata.sheets.map(s => s.properties.title));
72959
72971
 
72960
72972
  // \u30BB\u30EB\u5024\u3092\u53D6\u5F97
72961
- const values = await sheets.getValues(spreadsheetId, "Sheet1!A1:D10");
72973
+ const values = await sheets.getValues("Sheet1!A1:D10");
72962
72974
  console.log(values.values); // 2D array
72963
72975
 
72964
- // \u30BB\u30EB\u5024\u3092\u66F4\u65B0
72965
- await sheets.updateValues(spreadsheetId, "Sheet1!A1:B2", [["\u540D\u524D", "\u30B9\u30B3\u30A2"], ["Alice", "100"]]);
72966
-
72967
- // \u884C\u3092\u8FFD\u52A0
72968
- await sheets.appendValues(spreadsheetId, "Sheet1!A1", [["Bob", "95"], ["Charlie", "88"]]);
72976
+ // \u8907\u6570\u7BC4\u56F2\u3092\u30D0\u30C3\u30C1\u53D6\u5F97
72977
+ const batch = await sheets.batchGetValues(["Sheet1!A:A", "Sheet2!B2:C100"]);
72969
72978
  \`\`\``
72970
72979
  },
72971
72980
  tools: tools18
@@ -73398,12 +73407,12 @@ Authentication is handled automatically via OAuth proxy.`,
73398
73407
  });
73399
73408
 
73400
73409
  // ../connectors/src/connectors/hubspot-oauth/setup.ts
73401
- var requestToolName = `hubspot-oauth_${requestTool11.name}`;
73410
+ var requestToolName2 = `hubspot-oauth_${requestTool11.name}`;
73402
73411
  var hubspotOnboarding = new ConnectorOnboarding({
73403
73412
  connectionSetupInstructions: {
73404
73413
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067HubSpot\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
73405
73414
 
73406
- 1. \`${requestToolName}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73415
+ 1. \`${requestToolName2}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73407
73416
  - \`method\`: \`"GET"\`
73408
73417
  - \`path\`: \`"/account-info/v3/details"\`
73409
73418
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
@@ -73413,7 +73422,7 @@ var hubspotOnboarding = new ConnectorOnboarding({
73413
73422
  - \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
73414
73423
  en: `Follow these steps to set up the HubSpot connection.
73415
73424
 
73416
- 1. Call \`${requestToolName}\` to fetch account info:
73425
+ 1. Call \`${requestToolName2}\` to fetch account info:
73417
73426
  - \`method\`: \`"GET"\`
73418
73427
  - \`path\`: \`"/account-info/v3/details"\`
73419
73428
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -73687,12 +73696,12 @@ Authentication is handled automatically via OAuth proxy.`,
73687
73696
  });
73688
73697
 
73689
73698
  // ../connectors/src/connectors/stripe-oauth/setup.ts
73690
- var requestToolName2 = `stripe-oauth_${requestTool12.name}`;
73699
+ var requestToolName3 = `stripe-oauth_${requestTool12.name}`;
73691
73700
  var stripeOnboarding = new ConnectorOnboarding({
73692
73701
  connectionSetupInstructions: {
73693
73702
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Stripe\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
73694
73703
 
73695
- 1. \`${requestToolName2}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73704
+ 1. \`${requestToolName3}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
73696
73705
  - \`method\`: \`"GET"\`
73697
73706
  - \`path\`: \`"/v1/accounts"\`
73698
73707
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
@@ -73702,7 +73711,7 @@ var stripeOnboarding = new ConnectorOnboarding({
73702
73711
  - \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
73703
73712
  en: `Follow these steps to set up the Stripe connection.
73704
73713
 
73705
- 1. Call \`${requestToolName2}\` to fetch account info:
73714
+ 1. Call \`${requestToolName3}\` to fetch account info:
73706
73715
  - \`method\`: \`"GET"\`
73707
73716
  - \`path\`: \`"/v1/accounts"\`
73708
73717
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -73977,12 +73986,12 @@ Use this tool for all Stripe API interactions: querying charges, customers, invo
73977
73986
  });
73978
73987
 
73979
73988
  // ../connectors/src/connectors/stripe-api-key/setup.ts
73980
- var requestToolName3 = `stripe-api-key_${requestTool13.name}`;
73989
+ var requestToolName4 = `stripe-api-key_${requestTool13.name}`;
73981
73990
  var stripeApiKeyOnboarding = new ConnectorOnboarding({
73982
73991
  connectionSetupInstructions: {
73983
73992
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Stripe\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
73984
73993
 
73985
- 1. \`${requestToolName3}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u6B8B\u9AD8\u3092\u53D6\u5F97\u3059\u308B:
73994
+ 1. \`${requestToolName4}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u6B8B\u9AD8\u3092\u53D6\u5F97\u3059\u308B:
73986
73995
  - \`method\`: \`"GET"\`
73987
73996
  - \`path\`: \`"/v1/balance"\`
73988
73997
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BAPI\u30AD\u30FC\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B\uFF08Secret API Key\u307E\u305F\u306FRestricted API Key\u304C\u6B63\u3057\u304F\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u304B\uFF09
@@ -73992,7 +74001,7 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
73992
74001
  - \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
73993
74002
  en: `Follow these steps to set up the Stripe connection.
73994
74003
 
73995
- 1. Call \`${requestToolName3}\` to fetch account balance:
74004
+ 1. Call \`${requestToolName4}\` to fetch account balance:
73996
74005
  - \`method\`: \`"GET"\`
73997
74006
  - \`path\`: \`"/v1/balance"\`
73998
74007
  2. If an error is returned, ask the user to check the API key settings (verify that the Secret API Key or Restricted API Key is configured correctly)
@@ -74002,11 +74011,11 @@ var stripeApiKeyOnboarding = new ConnectorOnboarding({
74002
74011
  - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
74003
74012
  },
74004
74013
  dataOverviewInstructions: {
74005
- en: `1. Call ${requestToolName3} with GET /v1/customers?limit=5 to explore customers structure
74006
- 2. Call ${requestToolName3} with GET /v1/charges?limit=5 to explore charges structure
74014
+ en: `1. Call ${requestToolName4} with GET /v1/customers?limit=5 to explore customers structure
74015
+ 2. Call ${requestToolName4} with GET /v1/charges?limit=5 to explore charges structure
74007
74016
  3. Explore other endpoints (invoices, subscriptions, products) as needed`,
74008
- ja: `1. ${requestToolName3} \u3067 GET /v1/customers?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u9867\u5BA2\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74009
- 2. ${requestToolName3} \u3067 GET /v1/charges?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u8AB2\u91D1\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74017
+ ja: `1. ${requestToolName4} \u3067 GET /v1/customers?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u9867\u5BA2\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74018
+ 2. ${requestToolName4} \u3067 GET /v1/charges?limit=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u8AB2\u91D1\u306E\u69CB\u9020\u3092\u78BA\u8A8D
74010
74019
  3. \u5FC5\u8981\u306B\u5FDC\u3058\u3066\u4ED6\u306E\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\uFF08\u8ACB\u6C42\u66F8\u3001\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3001\u5546\u54C1\uFF09\u3092\u63A2\u7D22`
74011
74020
  }
74012
74021
  });
@@ -74291,7 +74300,7 @@ Authentication is handled automatically via OAuth proxy.
74291
74300
  });
74292
74301
 
74293
74302
  // ../connectors/src/connectors/airtable-oauth/setup.ts
74294
- var requestToolName4 = `airtable-oauth_${requestTool14.name}`;
74303
+ var requestToolName5 = `airtable-oauth_${requestTool14.name}`;
74295
74304
  var airtableOauthOnboarding = new ConnectorOnboarding({
74296
74305
  connectionSetupInstructions: {
74297
74306
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Airtable OAuth\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
@@ -74301,7 +74310,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74301
74310
  3. \`updateConnectionParameters\` \u3092\u547C\u3073\u51FA\u3059:
74302
74311
  - \`parameterSlug\`: \`"base-id"\`
74303
74312
  - \`value\`: \u62BD\u51FA\u3057\u305F\u30D9\u30FC\u30B9ID
74304
- 4. \`${requestToolName4}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30D9\u30FC\u30B9\u306E\u30C6\u30FC\u30D6\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
74313
+ 4. \`${requestToolName5}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30D9\u30FC\u30B9\u306E\u30C6\u30FC\u30D6\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
74305
74314
  - \`method\`: \`"GET"\`
74306
74315
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74307
74316
  5. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306B\u30D9\u30FC\u30B9\u306E\u5171\u6709\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
@@ -74316,7 +74325,7 @@ var airtableOauthOnboarding = new ConnectorOnboarding({
74316
74325
  3. Call \`updateConnectionParameters\`:
74317
74326
  - \`parameterSlug\`: \`"base-id"\`
74318
74327
  - \`value\`: The extracted base ID
74319
- 4. Call \`${requestToolName4}\` to fetch the base's table list:
74328
+ 4. Call \`${requestToolName5}\` to fetch the base's table list:
74320
74329
  - \`method\`: \`"GET"\`
74321
74330
  - \`path\`: \`"/meta/bases/{baseId}/tables"\`
74322
74331
  5. If an error is returned, ask the user to check the base sharing settings
@@ -76894,6 +76903,7 @@ Use this tool for all Shopify API interactions: listing products, orders, custom
76894
76903
  method: "POST",
76895
76904
  headers: { "Content-Type": "application/json" },
76896
76905
  body: JSON.stringify({
76906
+ grant_type: "client_credentials",
76897
76907
  client_id: clientId,
76898
76908
  client_secret: clientSecret
76899
76909
  })
@@ -77217,12 +77227,12 @@ Authentication is handled automatically via OAuth proxy.`,
77217
77227
  });
77218
77228
 
77219
77229
  // ../connectors/src/connectors/shopify-oauth/setup.ts
77220
- var requestToolName5 = `shopify-oauth_${requestTool22.name}`;
77230
+ var requestToolName6 = `shopify-oauth_${requestTool22.name}`;
77221
77231
  var shopifyOauthOnboarding = new ConnectorOnboarding({
77222
77232
  connectionSetupInstructions: {
77223
77233
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Shopify\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
77224
77234
 
77225
- 1. \`${requestToolName5}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30B7\u30E7\u30C3\u30D7\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
77235
+ 1. \`${requestToolName6}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30B7\u30E7\u30C3\u30D7\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
77226
77236
  - \`method\`: \`"GET"\`
77227
77237
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77228
77238
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
@@ -77232,7 +77242,7 @@ var shopifyOauthOnboarding = new ConnectorOnboarding({
77232
77242
  - \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
77233
77243
  en: `Follow these steps to set up the Shopify connection.
77234
77244
 
77235
- 1. Call \`${requestToolName5}\` to fetch shop info:
77245
+ 1. Call \`${requestToolName6}\` to fetch shop info:
77236
77246
  - \`method\`: \`"GET"\`
77237
77247
  - \`path\`: \`"/admin/api/2024-10/shop.json"\`
77238
77248
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -79489,12 +79499,12 @@ Pagination uses cursor-based start_cursor and page_size (max 100).`,
79489
79499
  });
79490
79500
 
79491
79501
  // ../connectors/src/connectors/notion-oauth/setup.ts
79492
- var requestToolName6 = `notion-oauth_${requestTool28.name}`;
79502
+ var requestToolName7 = `notion-oauth_${requestTool28.name}`;
79493
79503
  var notionOauthOnboarding = new ConnectorOnboarding({
79494
79504
  connectionSetupInstructions: {
79495
79505
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Notion\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
79496
79506
 
79497
- 1. \`${requestToolName6}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30DC\u30C3\u30C8\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
79507
+ 1. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30DC\u30C3\u30C8\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
79498
79508
  - \`method\`: \`"GET"\`
79499
79509
  - \`path\`: \`"/users/me"\`
79500
79510
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
@@ -79504,7 +79514,7 @@ var notionOauthOnboarding = new ConnectorOnboarding({
79504
79514
  - \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
79505
79515
  en: `Follow these steps to set up the Notion connection.
79506
79516
 
79507
- 1. Call \`${requestToolName6}\` to fetch bot user info:
79517
+ 1. Call \`${requestToolName7}\` to fetch bot user info:
79508
79518
  - \`method\`: \`"GET"\`
79509
79519
  - \`path\`: \`"/users/me"\`
79510
79520
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -82071,7 +82081,7 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
82071
82081
  });
82072
82082
 
82073
82083
  // ../connectors/src/connectors/gmail/setup.ts
82074
- var requestToolName7 = `gmail-service-account_${requestTool35.name}`;
82084
+ var requestToolName8 = `gmail-service-account_${requestTool35.name}`;
82075
82085
  var gmailOnboarding = new ConnectorOnboarding({
82076
82086
  connectionSetupInstructions: {
82077
82087
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Gmail\uFF08\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\uFF09\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u63A5\u7D9A\u4F5C\u6210\u6642\u306B\u306F\u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8JSON\u306E\u307F\u304C\u8A2D\u5B9A\u6E08\u307F\u3067\u3001\u59D4\u4EFB\u5BFE\u8C61\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306F\u3053\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u4E2D\u306B\u53D6\u5F97\u3057\u307E\u3059\u3002
@@ -82083,14 +82093,14 @@ var gmailOnboarding = new ConnectorOnboarding({
82083
82093
  2. \u53D7\u3051\u53D6\u3063\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092 \`updateConnectionParameters\` \u3067\u4FDD\u5B58\u3059\u308B:
82084
82094
  - \`parameterSlug\`: \`"delegated-user-email"\`
82085
82095
  - \`options\`: \`[{ value: <\u5165\u529B\u3055\u308C\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9>, label: <\u540C\u3058\u5024> }]\`\uFF081\u4EF6\u306E\u307F\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u81EA\u52D5\u9078\u629E\u3055\u308C\u308B\uFF09
82086
- 3. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
82096
+ 3. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
82087
82097
  - \`method\`: \`"GET"\`
82088
82098
  - \`path\`: \`"/me/profile"\`
82089
82099
  4. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u4EE5\u4E0B\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u30E6\u30FC\u30B6\u30FC\u306B\u4F1D\u3048\u308B:
82090
82100
  - \u30B5\u30FC\u30D3\u30B9\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u59D4\u4EFB\u304C\u6709\u52B9\u304B
82091
82101
  - Google Workspace\u7BA1\u7406\u30B3\u30F3\u30BD\u30FC\u30EB\u3067Gmail API\u30B9\u30B3\u30FC\u30D7\u304C\u8A31\u53EF\u3055\u308C\u3066\u3044\u308B\u304B
82092
82102
  - \u5165\u529B\u3055\u308C\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u6B63\u3057\u3044\u304B
82093
- 5. \`${requestToolName7}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82103
+ 5. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82094
82104
  - \`method\`: \`"GET"\`
82095
82105
  - \`path\`: \`"/me/labels"\`
82096
82106
 
@@ -82106,14 +82116,14 @@ var gmailOnboarding = new ConnectorOnboarding({
82106
82116
  2. Save the email via \`updateConnectionParameters\`:
82107
82117
  - \`parameterSlug\`: \`"delegated-user-email"\`
82108
82118
  - \`options\`: \`[{ value: <entered email>, label: <same value> }]\` (a single option is auto-selected)
82109
- 3. Call \`${requestToolName7}\` to get the user's profile:
82119
+ 3. Call \`${requestToolName8}\` to get the user's profile:
82110
82120
  - \`method\`: \`"GET"\`
82111
82121
  - \`path\`: \`"/me/profile"\`
82112
82122
  4. If an error is returned, ask the user to verify:
82113
82123
  - Domain-wide delegation is enabled for the service account
82114
82124
  - Gmail API scope is authorized in Google Workspace admin console
82115
82125
  - The entered email address is correct
82116
- 5. Call \`${requestToolName7}\` to get the label list:
82126
+ 5. Call \`${requestToolName8}\` to get the label list:
82117
82127
  - \`method\`: \`"GET"\`
82118
82128
  - \`path\`: \`"/me/labels"\`
82119
82129
 
@@ -82465,16 +82475,16 @@ All paths are relative to https://gmail.googleapis.com/gmail/v1/users. Use '/me'
82465
82475
  });
82466
82476
 
82467
82477
  // ../connectors/src/connectors/gmail-oauth/setup.ts
82468
- var requestToolName8 = `gmail-oauth_${requestTool36.name}`;
82478
+ var requestToolName9 = `gmail-oauth_${requestTool36.name}`;
82469
82479
  var gmailOnboarding2 = new ConnectorOnboarding({
82470
82480
  connectionSetupInstructions: {
82471
82481
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Gmail\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
82472
82482
 
82473
- 1. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
82483
+ 1. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u53D6\u5F97\u3059\u308B:
82474
82484
  - \`method\`: \`"GET"\`
82475
82485
  - \`path\`: \`"/me/profile"\`
82476
82486
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001OAuth\u306E\u8A8D\u8A3C\u304C\u6B63\u3057\u304F\u5B8C\u4E86\u3057\u3066\u3044\u308B\u304B\u78BA\u8A8D\u3059\u308B\u3088\u3046\u30E6\u30FC\u30B6\u30FC\u306B\u4F1D\u3048\u308B
82477
- 3. \`${requestToolName8}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82487
+ 3. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97\u3059\u308B:
82478
82488
  - \`method\`: \`"GET"\`
82479
82489
  - \`path\`: \`"/me/labels"\`
82480
82490
 
@@ -82483,11 +82493,11 @@ var gmailOnboarding2 = new ConnectorOnboarding({
82483
82493
  - \u30C4\u30FC\u30EB\u9593\u306F1\u6587\u3060\u3051\u66F8\u3044\u3066\u5373\u6B21\u306E\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u3002\u4E0D\u8981\u306A\u8AAC\u660E\u306F\u7701\u7565\u3057\u3001\u52B9\u7387\u7684\u306B\u9032\u3081\u308B`,
82484
82494
  en: `Follow these steps to set up the Gmail connection.
82485
82495
 
82486
- 1. Call \`${requestToolName8}\` to get the user's profile:
82496
+ 1. Call \`${requestToolName9}\` to get the user's profile:
82487
82497
  - \`method\`: \`"GET"\`
82488
82498
  - \`path\`: \`"/me/profile"\`
82489
82499
  2. If an error is returned, ask the user to verify that OAuth authentication completed correctly
82490
- 3. Call \`${requestToolName8}\` to get the label list:
82500
+ 3. Call \`${requestToolName9}\` to get the label list:
82491
82501
  - \`method\`: \`"GET"\`
82492
82502
  - \`path\`: \`"/me/labels"\`
82493
82503
 
@@ -83690,12 +83700,12 @@ Zendesk uses cursor-based pagination with page[size] and page[after] parameters.
83690
83700
  });
83691
83701
 
83692
83702
  // ../connectors/src/connectors/zendesk-oauth/setup.ts
83693
- var requestToolName9 = `zendesk-oauth_${requestTool39.name}`;
83703
+ var requestToolName10 = `zendesk-oauth_${requestTool39.name}`;
83694
83704
  var zendeskOauthOnboarding = new ConnectorOnboarding({
83695
83705
  connectionSetupInstructions: {
83696
83706
  en: `Follow these steps to set up the Zendesk connection.
83697
83707
 
83698
- 1. Call \`${requestToolName9}\` to fetch account info:
83708
+ 1. Call \`${requestToolName10}\` to fetch account info:
83699
83709
  - \`method\`: \`"GET"\`
83700
83710
  - \`path\`: \`"/api/v2/account/settings.json"\`
83701
83711
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -83705,7 +83715,7 @@ var zendeskOauthOnboarding = new ConnectorOnboarding({
83705
83715
  - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
83706
83716
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Zendesk\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
83707
83717
 
83708
- 1. \`${requestToolName9}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
83718
+ 1. \`${requestToolName10}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u30A2\u30AB\u30A6\u30F3\u30C8\u60C5\u5831\u3092\u53D6\u5F97\u3059\u308B:
83709
83719
  - \`method\`: \`"GET"\`
83710
83720
  - \`path\`: \`"/api/v2/account/settings.json"\`
83711
83721
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
@@ -84330,12 +84340,12 @@ Search endpoints (contacts/search, conversations/search) use POST with a query o
84330
84340
  });
84331
84341
 
84332
84342
  // ../connectors/src/connectors/intercom-oauth/setup.ts
84333
- var requestToolName10 = `intercom-oauth_${requestTool41.name}`;
84343
+ var requestToolName11 = `intercom-oauth_${requestTool41.name}`;
84334
84344
  var intercomOauthOnboarding = new ConnectorOnboarding({
84335
84345
  connectionSetupInstructions: {
84336
84346
  en: `Follow these steps to set up the Intercom connection.
84337
84347
 
84338
- 1. Call \`${requestToolName10}\` to verify the connection:
84348
+ 1. Call \`${requestToolName11}\` to verify the connection:
84339
84349
  - \`method\`: \`"GET"\`
84340
84350
  - \`path\`: \`"/me"\`
84341
84351
  2. If an error is returned, ask the user to check the OAuth connection settings
@@ -84345,7 +84355,7 @@ var intercomOauthOnboarding = new ConnectorOnboarding({
84345
84355
  - Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`,
84346
84356
  ja: `\u4EE5\u4E0B\u306E\u624B\u9806\u3067Intercom\u30B3\u30CD\u30AF\u30B7\u30E7\u30F3\u306E\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
84347
84357
 
84348
- 1. \`${requestToolName10}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u63A5\u7D9A\u3092\u78BA\u8A8D\u3059\u308B:
84358
+ 1. \`${requestToolName11}\` \u3092\u547C\u3073\u51FA\u3057\u3066\u3001\u63A5\u7D9A\u3092\u78BA\u8A8D\u3059\u308B:
84349
84359
  - \`method\`: \`"GET"\`
84350
84360
  - \`path\`: \`"/me"\`
84351
84361
  2. \u30A8\u30E9\u30FC\u304C\u8FD4\u3055\u308C\u305F\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u306BOAuth\u63A5\u7D9A\u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3059\u308B\u3088\u3046\u4F1D\u3048\u308B
@@ -85829,7 +85839,7 @@ var parameters61 = {
85829
85839
  organizationSlug: new ParameterDefinition({
85830
85840
  slug: "organization-slug",
85831
85841
  name: "Sentry Organization Slug",
85832
- description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://sentry.io/organizations/{slug}/",
85842
+ description: "The slug of your Sentry organization (e.g., 'my-org'). Found in your Sentry URL: https://{slug}.sentry.io/",
85833
85843
  envVarBaseKey: "SENTRY_ORGANIZATION_SLUG",
85834
85844
  type: "text",
85835
85845
  secret: false,
@@ -86535,11 +86545,11 @@ var influxdbOnboarding = new ConnectorOnboarding({
86535
86545
 
86536
86546
  #### Confirm the Database (or Bucket) Name
86537
86547
  - InfluxDB 3: use the database name
86538
- - InfluxDB 2: use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
86548
+ - InfluxDB 2 (includes InfluxDB Cloud on \`*.cloud2.influxdata.com\`): use the bucket name (buckets act as databases in the v1/v3 compatibility endpoints)
86539
86549
 
86540
- #### Organization (InfluxDB 2 only)
86541
- - If you are on InfluxDB 2, set the Organization parameter to the org that owns the bucket
86542
- - For InfluxDB 3 Cloud you can leave Organization blank`,
86550
+ #### Organization
86551
+ - InfluxDB 2: set the Organization parameter to the org that owns the bucket (required for Flux queries and writes)
86552
+ - InfluxDB 3 Cloud Serverless: you can leave Organization blank when only using SQL`,
86543
86553
  ja: `#### API \u30C8\u30FC\u30AF\u30F3\u306E\u767A\u884C
86544
86554
  1. InfluxDB Cloud / OSS \u306B\u30B5\u30A4\u30F3\u30A4\u30F3
86545
86555
  2. Load Data \u2192 API Tokens \u2192 Generate API Token
@@ -86548,19 +86558,37 @@ var influxdbOnboarding = new ConnectorOnboarding({
86548
86558
 
86549
86559
  #### Database (\u307E\u305F\u306F Bucket) \u540D\u306E\u78BA\u8A8D
86550
86560
  - InfluxDB 3: database \u540D\u3092\u4F7F\u7528
86551
- - InfluxDB 2: bucket \u540D\u3092\u4F7F\u7528\uFF08v1/v3 \u4E92\u63DB\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3067\u306F bucket \u304C database \u3068\u3057\u3066\u6271\u308F\u308C\u308B\uFF09
86561
+ - InfluxDB 2\uFF08\`*.cloud2.influxdata.com\` \u306E InfluxDB Cloud \u3092\u542B\u3080\uFF09: bucket \u540D\u3092\u4F7F\u7528\uFF08v1/v3 \u4E92\u63DB\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3067\u306F bucket \u304C database \u3068\u3057\u3066\u6271\u308F\u308C\u308B\uFF09
86552
86562
 
86553
- #### Organization\uFF08InfluxDB 2 \u306E\u307F\uFF09
86554
- - InfluxDB 2 \u306E\u5834\u5408\u3001bucket \u3092\u4FDD\u6709\u3059\u308B\u7D44\u7E54\u540D\u3092 Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u8A2D\u5B9A
86555
- - InfluxDB 3 Cloud \u306E\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
86563
+ #### Organization
86564
+ - 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
86565
+ - InfluxDB 3 Cloud Serverless: SQL \u306E\u307F\u3092\u4F7F\u3046\u5834\u5408\u306F\u7A7A\u306E\u307E\u307E\u3067\u554F\u984C\u306A\u3044`
86556
86566
  },
86557
86567
  dataOverviewInstructions: {
86558
- en: `1. For InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
86559
- 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" }
86560
- 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`,
86561
- 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
86562
- 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
86563
- 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`
86568
+ 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.
86569
+
86570
+ 1. Probe for InfluxDB 3: call influxdb_request with POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT 1" }
86571
+ - 200 with JSON rows \u2192 InfluxDB 3. Continue with SQL.
86572
+ - 405 Method Not Allowed, or an HTML body like "<html>...405 Not Allowed..." \u2192 InfluxDB 2. Fall back to Flux (step 3).
86573
+ 2. InfluxDB 3 data overview:
86574
+ a. POST /api/v3/query_sql, body { "db": "<database>", "q": "SHOW TABLES" } to list measurements
86575
+ b. POST /api/v3/query_sql, body { "db": "<database>", "q": "SELECT * FROM <measurement> ORDER BY time DESC LIMIT 5" } to inspect a sample
86576
+ 3. InfluxDB 2 data overview (Organization parameter required):
86577
+ a. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'buckets()' to list buckets
86578
+ b. POST /api/v2/query?org=<org>, contentType 'application/vnd.flux', body 'from(bucket:"<bucket>") |> range(start: -1h) |> limit(n:5)' to inspect data
86579
+ - If the Organization parameter was not provided but v3 probing failed, ask the user to set it using updateConnectionParameters before continuing.`,
86580
+ 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
86581
+
86582
+ 1. InfluxDB 3 \u306E\u5224\u5225: influxdb_request \u3067 POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SELECT 1" } \u3092\u5B9F\u884C
86583
+ - 200 + JSON \u884C\u304C\u8FD4\u308B \u2192 InfluxDB 3\u3002\u305D\u306E\u307E\u307E SQL \u3067\u7D9A\u884C\u3002
86584
+ - 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
86585
+ 2. InfluxDB 3 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981:
86586
+ a. POST /api/v3/query_sql\u3001body { "db": "<database>", "q": "SHOW TABLES" } \u3067 measurement \u4E00\u89A7\u3092\u53D6\u5F97
86587
+ 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
86588
+ 3. InfluxDB 2 \u306E\u5834\u5408\u306E\u30C7\u30FC\u30BF\u6982\u8981\uFF08Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u5FC5\u9808\uFF09:
86589
+ a. POST /api/v2/query?org=<org>\u3001contentType 'application/vnd.flux'\u3001body 'buckets()' \u3067 bucket \u4E00\u89A7\u3092\u53D6\u5F97
86590
+ 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
86591
+ - Organization \u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u672A\u8A2D\u5B9A\u3067 v3 \u5224\u5225\u3082\u5931\u6557\u3057\u305F\u5834\u5408\u306F\u3001updateConnectionParameters \u3067\u30E6\u30FC\u30B6\u30FC\u306B\u8A2D\u5B9A\u3092\u4FC3\u3057\u3066\u304B\u3089\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002`
86564
86592
  }
86565
86593
  });
86566
86594
 
@@ -86569,7 +86597,7 @@ var parameters63 = {
86569
86597
  url: new ParameterDefinition({
86570
86598
  slug: "url",
86571
86599
  name: "InfluxDB URL",
86572
- 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.",
86600
+ description: "The base URL of your InfluxDB instance. Do not include a trailing slash. Works with both InfluxDB 2 (e.g., InfluxDB Cloud on '*.cloud2.influxdata.com', OSS 2.x) and InfluxDB 3 (Cloud Serverless, Enterprise, OSS 3.x).",
86573
86601
  envVarBaseKey: "INFLUXDB_URL",
86574
86602
  type: "text",
86575
86603
  secret: false,
@@ -86596,7 +86624,7 @@ var parameters63 = {
86596
86624
  org: new ParameterDefinition({
86597
86625
  slug: "org",
86598
86626
  name: "Organization",
86599
- description: "The InfluxDB organization name. Required for InfluxDB 2.x Flux queries and writes; optional for InfluxDB 3.",
86627
+ description: "The InfluxDB organization name. Required for InfluxDB 2 Flux queries and writes (including InfluxDB Cloud on '*.cloud2.influxdata.com'). Optional for InfluxDB 3 when only using SQL.",
86600
86628
  envVarBaseKey: "INFLUXDB_ORG",
86601
86629
  type: "text",
86602
86630
  secret: false,
@@ -86688,10 +86716,17 @@ For read-only data exploration prefer SQL (InfluxDB 3) or InfluxQL queries \u201
86688
86716
  }
86689
86717
  if (!response.ok) {
86690
86718
  let errorMessage = `HTTP ${response.status} ${response.statusText}`;
86719
+ const bodyText = typeof data === "string" ? data : void 0;
86720
+ const isHtml = resContentType.includes("text/html") || bodyText !== void 0 && bodyText.trimStart().startsWith("<");
86691
86721
  if (data && typeof data === "object" && !Array.isArray(data) && typeof data.message === "string") {
86692
86722
  errorMessage = data.message;
86693
- } else if (typeof data === "string" && data) {
86694
- errorMessage = data;
86723
+ } else if (bodyText) {
86724
+ errorMessage = isHtml ? bodyText.replace(/\s+/g, " ").slice(0, 200) : bodyText;
86725
+ }
86726
+ const hitsV3Path = path4.includes("/api/v3/");
86727
+ const looksLikeMissingV3 = hitsV3Path && (response.status === 405 || response.status === 404 || isHtml);
86728
+ if (looksLikeMissingV3) {
86729
+ errorMessage += " \u2014 This InfluxDB instance does not support the v3 API at this path. It is likely InfluxDB 2 (e.g. InfluxDB Cloud on '*.cloud2.influxdata.com'). Retry via Flux on '/api/v2/query?org={org}' with contentType 'application/vnd.flux'.";
86695
86730
  }
86696
86731
  return { success: false, error: errorMessage };
86697
86732
  }
@@ -86713,14 +86748,22 @@ var influxdbConnector = new ConnectorPlugin({
86713
86748
  authType: AUTH_TYPES.API_KEY,
86714
86749
  name: "InfluxDB",
86715
86750
  description: "Connect to InfluxDB (Cloud or OSS) to query time-series data with SQL, InfluxQL, or Flux and to write line protocol.",
86716
- iconUrl: "https://upload.wikimedia.org/wikipedia/commons/b/b2/Influxdb_logo.svg",
86751
+ iconUrl: "https://images.ctfassets.net/9ncizv60xc5y/J1JauVRNmahSVTVrpPfQK/18350d8d3f2dc3be25e8e36ee52914a0/influxdb.png",
86717
86752
  parameters: parameters63,
86718
86753
  releaseFlag: { dev1: true, dev2: false, prod: false },
86719
86754
  onboarding: influxdbOnboarding,
86720
86755
  systemPrompt: {
86721
- en: `### Tools
86756
+ en: `### Variant Detection
86757
+
86758
+ 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:
86759
+
86760
+ 1. Call \`influxdb_request\` POST \`/api/v3/query_sql\` with body \`{ "db": "<database>", "q": "SELECT 1" }\`
86761
+ 2. 200 + JSON rows \u2192 InfluxDB 3. Use SQL endpoints.
86762
+ 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\`.
86722
86763
 
86723
- - \`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\`.
86764
+ ### Tools
86765
+
86766
+ - \`influxdb_request\`: The only way to call the InfluxDB HTTP API. Use it to run SQL / InfluxQL / Flux queries, write line protocol, and inspect buckets / databases. Authentication (\`Authorization: Token {token}\`) and the instance URL are configured automatically. On InfluxDB 3 prefer SQL (\`POST /api/v3/query_sql\`) \u2014 it returns JSON rows that are directly usable. On InfluxDB 2 use Flux (\`POST /api/v2/query?org={org}\`) \u2014 the response is annotated CSV. Writes use \`POST /api/v3/write_lp?db={db}\` (v3) or \`POST /api/v2/write?org={org}&bucket={bucket}\` (v2) with a line-protocol body and \`contentType\` set to \`text/plain; charset=utf-8\`.
86724
86767
 
86725
86768
  ### Business Logic
86726
86769
 
@@ -86781,7 +86824,15 @@ export default async function handler(c: Context) {
86781
86824
  - Time filtering uses standard SQL \`time\` column comparisons (\`time >= now() - INTERVAL '...' \`)
86782
86825
  - Aggregates: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`; bucket time with \`date_bin('5 minutes', time)\`
86783
86826
  - List measurements: \`SHOW TABLES\`; list columns: \`SHOW COLUMNS FROM <measurement>\``,
86784
- ja: `### \u30C4\u30FC\u30EB
86827
+ ja: `### \u30D0\u30EA\u30A2\u30F3\u30C8\u5224\u5225
86828
+
86829
+ \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:
86830
+
86831
+ 1. \`influxdb_request\` \u3067 POST \`/api/v3/query_sql\`\u3001body \`{ "db": "<database>", "q": "SELECT 1" }\` \u3092\u547C\u3073\u51FA\u3059
86832
+ 2. 200 + JSON \u884C \u2192 InfluxDB 3\u3002SQL \u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u4F7F\u7528\u3002
86833
+ 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
86834
+
86835
+ ### \u30C4\u30FC\u30EB
86785
86836
 
86786
86837
  - \`influxdb_request\`: InfluxDB HTTP API \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002SQL / InfluxQL / Flux \u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u3001line protocol \u66F8\u304D\u8FBC\u307F\u3001bucket / database \u306E\u78BA\u8A8D\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08\`Authorization: Token {token}\`\uFF09\u3068 instance URL \u306F\u81EA\u52D5\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002InfluxDB 3 \u3067\u306F SQL (\`POST /api/v3/query_sql\`) \u304C JSON \u884C\u3092\u8FD4\u3059\u305F\u3081\u6700\u3082\u6271\u3044\u3084\u3059\u3044\u3067\u3059\u3002InfluxDB 2 \u3067\u306F Flux (\`POST /api/v2/query?org={org}\`) \u3092\u4F7F\u7528\u3057\u3001\u30EC\u30B9\u30DD\u30F3\u30B9\u306F\u6CE8\u91C8\u4ED8\u304D CSV \u3067\u3059\u3002\u66F8\u304D\u8FBC\u307F\u306F \`POST /api/v3/write_lp?db={db}\` (v3) \u307E\u305F\u306F \`POST /api/v2/write?org={org}&bucket={bucket}\` (v2) \u306B line protocol \u3092\u9001\u308A\u307E\u3059\uFF08\`contentType\` \u306F \`text/plain; charset=utf-8\`\uFF09\u3002
86787
86838
 
@@ -86845,7 +86896,47 @@ export default async function handler(c: Context) {
86845
86896
  - \u96C6\u8A08: \`AVG\`, \`SUM\`, \`MIN\`, \`MAX\`, \`COUNT\`\u3002\u6642\u9593\u30D0\u30B1\u30C3\u30C8: \`date_bin('5 minutes', time)\`
86846
86897
  - measurement \u4E00\u89A7: \`SHOW TABLES\`\u3001\u5217\u4E00\u89A7: \`SHOW COLUMNS FROM <measurement>\``
86847
86898
  },
86848
- tools: tools63
86899
+ tools: tools63,
86900
+ async checkConnection(params) {
86901
+ const url = (params.url ?? "").replace(/\/$/, "");
86902
+ const token = params.token;
86903
+ if (!url) {
86904
+ return { success: false, error: "InfluxDB URL is not configured" };
86905
+ }
86906
+ if (!token) {
86907
+ return { success: false, error: "API Token is not configured" };
86908
+ }
86909
+ try {
86910
+ const res = await fetch(`${url}/api/v2/orgs`, {
86911
+ method: "GET",
86912
+ headers: {
86913
+ Authorization: `Token ${token}`,
86914
+ Accept: "application/json"
86915
+ }
86916
+ });
86917
+ if (res.status === 401 || res.status === 403) {
86918
+ return {
86919
+ success: false,
86920
+ error: `Authentication failed (HTTP ${res.status}). Check the API token and its permissions.`
86921
+ };
86922
+ }
86923
+ if (!res.ok) {
86924
+ const body = await res.text().catch(() => res.statusText);
86925
+ const snippet = body.replace(/\s+/g, " ").slice(0, 200);
86926
+ return {
86927
+ success: false,
86928
+ error: `Connection check failed: HTTP ${res.status} ${res.statusText} \u2014 ${snippet}`
86929
+ };
86930
+ }
86931
+ return { success: true };
86932
+ } catch (error2) {
86933
+ const message = error2 instanceof Error ? error2.message : String(error2);
86934
+ return {
86935
+ success: false,
86936
+ error: `Failed to reach InfluxDB at ${url}: ${message}`
86937
+ };
86938
+ }
86939
+ }
86849
86940
  });
86850
86941
 
86851
86942
  // ../connectors/src/connectors/registry.ts