@squadbase/vite-server 0.1.17-dev.24af54e → 0.1.17-dev.423ee34

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.
Files changed (77) hide show
  1. package/dist/cli/index.js +4873 -1073
  2. package/dist/connectors/airtable-oauth.js +78 -11
  3. package/dist/connectors/airtable.js +74 -11
  4. package/dist/connectors/amplitude.js +38 -11
  5. package/dist/connectors/anthropic.js +4 -2
  6. package/dist/connectors/asana.js +67 -13
  7. package/dist/connectors/attio.js +60 -16
  8. package/dist/connectors/aws-billing.js +38 -11
  9. package/dist/connectors/azure-sql.js +64 -13
  10. package/dist/connectors/backlog-api-key.js +70 -18
  11. package/dist/connectors/clickup.js +80 -13
  12. package/dist/connectors/cosmosdb.js +42 -15
  13. package/dist/connectors/customerio.js +39 -12
  14. package/dist/connectors/dbt.js +716 -28
  15. package/dist/connectors/freshdesk.js +112 -11
  16. package/dist/connectors/freshsales.js +38 -11
  17. package/dist/connectors/freshservice.js +38 -11
  18. package/dist/connectors/gamma.js +47 -20
  19. package/dist/connectors/gemini.js +4 -2
  20. package/dist/connectors/github.js +42 -15
  21. package/dist/connectors/gmail-oauth.js +38 -13
  22. package/dist/connectors/gmail.js +34 -7
  23. package/dist/connectors/google-ads.js +38 -11
  24. package/dist/connectors/google-analytics-oauth.js +182 -28
  25. package/dist/connectors/google-analytics.js +653 -104
  26. package/dist/connectors/google-audit-log.js +34 -7
  27. package/dist/connectors/google-calendar-oauth.js +91 -18
  28. package/dist/connectors/google-calendar.js +91 -14
  29. package/dist/connectors/google-docs.js +38 -13
  30. package/dist/connectors/google-drive.js +60 -13
  31. package/dist/connectors/google-search-console-oauth.js +156 -20
  32. package/dist/connectors/google-sheets.js +36 -9
  33. package/dist/connectors/google-slides.js +38 -13
  34. package/dist/connectors/grafana.js +75 -13
  35. package/dist/connectors/hubspot-oauth.js +69 -12
  36. package/dist/connectors/hubspot.js +55 -12
  37. package/dist/connectors/influxdb.js +38 -11
  38. package/dist/connectors/intercom-oauth.js +100 -15
  39. package/dist/connectors/intercom.js +42 -15
  40. package/dist/connectors/jdbc.js +36 -9
  41. package/dist/connectors/jira-api-key.js +98 -14
  42. package/dist/connectors/kintone-api-token.js +96 -21
  43. package/dist/connectors/kintone.js +84 -14
  44. package/dist/connectors/linear.js +84 -15
  45. package/dist/connectors/linkedin-ads.js +71 -17
  46. package/dist/connectors/mailchimp-oauth.js +36 -9
  47. package/dist/connectors/mailchimp.js +36 -9
  48. package/dist/connectors/meta-ads-oauth.js +63 -17
  49. package/dist/connectors/meta-ads.js +65 -17
  50. package/dist/connectors/mixpanel.js +38 -11
  51. package/dist/connectors/monday.js +39 -12
  52. package/dist/connectors/mongodb.js +38 -11
  53. package/dist/connectors/notion-oauth.js +88 -14
  54. package/dist/connectors/notion.js +90 -14
  55. package/dist/connectors/openai.js +4 -2
  56. package/dist/connectors/oracle.js +78 -20
  57. package/dist/connectors/outlook-oauth.js +48 -23
  58. package/dist/connectors/powerbi-oauth.js +321 -49
  59. package/dist/connectors/salesforce.js +72 -12
  60. package/dist/connectors/semrush.js +374 -52
  61. package/dist/connectors/sentry.js +66 -13
  62. package/dist/connectors/shopify-oauth.js +71 -13
  63. package/dist/connectors/shopify.js +38 -11
  64. package/dist/connectors/sqlserver.js +64 -13
  65. package/dist/connectors/stripe-api-key.js +96 -18
  66. package/dist/connectors/stripe-oauth.js +98 -22
  67. package/dist/connectors/supabase.js +55 -11
  68. package/dist/connectors/tableau.js +262 -92
  69. package/dist/connectors/tiktok-ads.js +67 -19
  70. package/dist/connectors/wix-store.js +38 -11
  71. package/dist/connectors/zendesk-oauth.js +83 -15
  72. package/dist/connectors/zendesk.js +42 -15
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.js +4902 -1077
  75. package/dist/main.js +4891 -1071
  76. package/dist/vite-plugin.js +4871 -1071
  77. package/package.json +1 -1
@@ -21,6 +21,7 @@ var init_parameter_definition = __esm({
21
21
  type;
22
22
  secret;
23
23
  required;
24
+ isDeprecated;
24
25
  constructor(config) {
25
26
  this.slug = config.slug;
26
27
  this.name = config.name;
@@ -29,6 +30,7 @@ var init_parameter_definition = __esm({
29
30
  this.type = config.type;
30
31
  this.secret = config.secret;
31
32
  this.required = config.required;
33
+ this.isDeprecated = config.isDeprecated ?? false;
32
34
  }
33
35
  /**
34
36
  * Get the parameter value from a ConnectorConnectionObject.
@@ -545,7 +547,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
545
547
  /**
546
548
  * Create tools for connections that belong to this connector.
547
549
  * Filters connections by connectorKey internally.
548
- * Returns tools keyed as `${connectorKey}_${toolName}`.
550
+ * Returns tools keyed as `connector_${connectorKey}_${toolName}`.
549
551
  */
550
552
  createTools(connections, config, opts) {
551
553
  const myConnections = connections.filter(
@@ -555,7 +557,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
555
557
  for (const t of Object.values(this.tools)) {
556
558
  const tool = t.createTool(myConnections, config);
557
559
  const originalToModelOutput = tool.toModelOutput;
558
- result[`${this.connectorKey}_${t.name}`] = {
560
+ result[`connector_${this.connectorKey}_${t.name}`] = {
559
561
  ...tool,
560
562
  toModelOutput: async (options) => {
561
563
  if (!originalToModelOutput) {
@@ -611,19 +613,34 @@ async function runSetupFlow(flow, params, ctx, config) {
611
613
  };
612
614
  let state = flow.initialState();
613
615
  let answerIdx = 0;
616
+ const pendingParameterUpdates = [];
614
617
  for (const step of flow.steps) {
615
618
  const ans = ctx.answers[answerIdx];
616
619
  if (ans && ans.questionSlug === step.slug) {
617
620
  state = step.applyAnswer(state, ans.answer);
621
+ if (step.toParameterUpdates) {
622
+ pendingParameterUpdates.push(...step.toParameterUpdates(state));
623
+ }
618
624
  answerIdx += 1;
619
625
  continue;
620
626
  }
627
+ const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
621
628
  if (step.type === "text") {
629
+ if (step.fetchOptions) {
630
+ const options2 = await step.fetchOptions(state, runtime);
631
+ if (options2.length === 0) {
632
+ continue;
633
+ }
634
+ }
622
635
  return {
623
636
  type: "nextQuestion",
624
637
  questionSlug: step.slug,
625
638
  question: step.question[ctx.language],
626
- questionType: "text"
639
+ questionType: "text",
640
+ allowFreeText: resolvedAllowFreeText,
641
+ ...pendingParameterUpdates.length > 0 && {
642
+ parameterUpdates: pendingParameterUpdates
643
+ }
627
644
  };
628
645
  }
629
646
  const options = step.fetchOptions ? await step.fetchOptions(state, runtime) : [];
@@ -635,11 +652,21 @@ async function runSetupFlow(flow, params, ctx, config) {
635
652
  questionSlug: step.slug,
636
653
  question: step.question[ctx.language],
637
654
  questionType: step.type,
638
- options
655
+ options,
656
+ allowFreeText: resolvedAllowFreeText,
657
+ ...pendingParameterUpdates.length > 0 && {
658
+ parameterUpdates: pendingParameterUpdates
659
+ }
639
660
  };
640
661
  }
641
662
  const dataInvestigationResult = await flow.finalize(state, runtime);
642
- return { type: "fulfilled", dataInvestigationResult };
663
+ return {
664
+ type: "fulfilled",
665
+ dataInvestigationResult,
666
+ ...pendingParameterUpdates.length > 0 && {
667
+ parameterUpdates: pendingParameterUpdates
668
+ }
669
+ };
643
670
  }
644
671
  async function resolveSetupSelection(params) {
645
672
  const { selected, allSentinel, fetchAll, limit } = params;
@@ -679,12 +706,12 @@ init_oracle_runner();
679
706
  // ../connectors/src/connectors/oracle/setup.ts
680
707
  var oracleOnboarding = new ConnectorOnboarding({
681
708
  dataOverviewInstructions: {
682
- en: `1. Use oracle_executeQuery to confirm the version: \`SELECT BANNER FROM V$VERSION\`
709
+ en: `1. Use connector_oracle_executeQuery to confirm the version: \`SELECT BANNER FROM V$VERSION\`
683
710
  2. Identify the current schema (Oracle treats users as schemas): \`SELECT USER FROM DUAL\`
684
711
  3. List user tables: \`SELECT TABLE_NAME FROM USER_TABLES\`. To explore other schemas the connection has access to, use \`ALL_TABLES\` filtered by \`OWNER\`.
685
712
  4. For key tables, fetch column info: \`SELECT COLUMN_NAME, DATA_TYPE FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER('xxx')\` (Oracle stores unquoted identifiers as upper-case).
686
713
  5. Sample up to 3 tables. Oracle has no \`LIMIT\` keyword: use \`FETCH FIRST n ROWS ONLY\` or \`ROWNUM\`: \`SELECT * FROM <table> FETCH FIRST 5 ROWS ONLY\``,
687
- ja: `1. oracle_executeQuery \u3067\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u78BA\u8A8D: \`SELECT BANNER FROM V$VERSION\`
714
+ ja: `1. connector_oracle_executeQuery \u3067\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u78BA\u8A8D: \`SELECT BANNER FROM V$VERSION\`
688
715
  2. \u73FE\u5728\u306E\u30B9\u30AD\u30FC\u30DE\uFF08Oracle\u3067\u306F\u30E6\u30FC\u30B6\u30FC\uFF1D\u30B9\u30AD\u30FC\u30DE\uFF09\u3092\u78BA\u8A8D: \`SELECT USER FROM DUAL\`
689
716
  3. \u30E6\u30FC\u30B6\u30FC\u30C6\u30FC\u30D6\u30EB\u4E00\u89A7\u3092\u53D6\u5F97: \`SELECT TABLE_NAME FROM USER_TABLES\`\u3002\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u4ED6\u30B9\u30AD\u30FC\u30DE\u3092\u53C2\u7167\u3059\u308B\u5834\u5408\u306F \`ALL_TABLES\` \u3092 \`OWNER\` \u3067\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3002
690
717
  4. \u4E3B\u8981\u30C6\u30FC\u30D6\u30EB\u306E\u30AB\u30E9\u30E0\u60C5\u5831\u3092\u53D6\u5F97: \`SELECT COLUMN_NAME, DATA_TYPE FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER('xxx')\`\uFF08Oracle \u306F\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u8B58\u5225\u5B50\u3092\u5927\u6587\u5B57\u3067\u4FDD\u5B58\uFF09\u3002
@@ -751,14 +778,15 @@ function isInternalOwner(name) {
751
778
  function quoteLiteral(value) {
752
779
  return "'" + value.replace(/'/g, "''") + "'";
753
780
  }
754
- async function fetchTableNames(params, owner) {
781
+ async function fetchTableAndViewNames(params, owner) {
755
782
  const rows = await runOracleSetupQuery(
756
783
  params,
757
- `SELECT TABLE_NAME FROM ALL_TABLES
758
- WHERE OWNER = ${quoteLiteral(owner)}
759
- ORDER BY TABLE_NAME`
784
+ `SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = ${quoteLiteral(owner)}
785
+ UNION
786
+ SELECT VIEW_NAME FROM ALL_VIEWS WHERE OWNER = ${quoteLiteral(owner)}
787
+ ORDER BY 1`
760
788
  );
761
- return rows.map((r) => String(r["TABLE_NAME"] ?? "")).filter((name) => name);
789
+ return rows.map((r) => String(r["TABLE_NAME"] ?? r["VIEW_NAME"] ?? "")).filter((name) => name);
762
790
  }
763
791
  var oracleSetupFlow = {
764
792
  initialState: () => ({}),
@@ -783,17 +811,17 @@ var oracleSetupFlow = {
783
811
  slug: "tables",
784
812
  type: "multiSelect",
785
813
  question: {
786
- ja: "\u5BFE\u8C61\u30C6\u30FC\u30D6\u30EB\u3092\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u9078\u629E\u53EF\uFF09",
787
- en: "Select target tables (multi-select allowed)"
814
+ ja: "\u5BFE\u8C61\u30C6\u30FC\u30D6\u30EB\u30FB\u30D3\u30E5\u30FC\u3092\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u8907\u6570\u9078\u629E\u53EF\uFF09",
815
+ en: "Select target tables and views (multi-select allowed)"
788
816
  },
789
817
  async fetchOptions(state, rt) {
790
818
  if (!state.owner) return [];
791
- const names = await fetchTableNames(rt.params, state.owner);
819
+ const names = await fetchTableAndViewNames(rt.params, state.owner);
792
820
  const tableOptions = names.map((value) => ({ value }));
793
821
  return [
794
822
  {
795
823
  value: ALL_TABLES,
796
- label: rt.language === "ja" ? "\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB" : "All tables"
824
+ label: rt.language === "ja" ? "\u3059\u3079\u3066\u306E\u30C6\u30FC\u30D6\u30EB\u30FB\u30D3\u30E5\u30FC" : "All tables and views"
797
825
  },
798
826
  ...tableOptions
799
827
  ];
@@ -809,9 +837,36 @@ var oracleSetupFlow = {
809
837
  const targetTables = await resolveSetupSelection({
810
838
  selected: state.tables,
811
839
  allSentinel: ALL_TABLES,
812
- fetchAll: () => fetchTableNames(rt.params, owner),
840
+ fetchAll: () => fetchTableAndViewNames(rt.params, owner),
813
841
  limit: ORACLE_SETUP_MAX_TABLES
814
842
  });
843
+ let rowCounts = /* @__PURE__ */ new Map();
844
+ try {
845
+ const countRows = await runOracleSetupQuery(
846
+ rt.params,
847
+ `SELECT TABLE_NAME, NUM_ROWS FROM ALL_TABLES WHERE OWNER = ${quoteLiteral(owner)}`
848
+ );
849
+ rowCounts = new Map(
850
+ countRows.filter((r) => r["NUM_ROWS"] != null).map((r) => [
851
+ String(r["TABLE_NAME"] ?? ""),
852
+ Number(r["NUM_ROWS"])
853
+ ])
854
+ );
855
+ } catch {
856
+ }
857
+ const typeRows = targetTables.length > 0 ? await runOracleSetupQuery(
858
+ rt.params,
859
+ `SELECT OBJECT_NAME, OBJECT_TYPE FROM ALL_OBJECTS
860
+ WHERE OWNER = ${quoteLiteral(owner)}
861
+ AND OBJECT_NAME IN (${targetTables.map(quoteLiteral).join(", ")})
862
+ AND OBJECT_TYPE IN ('TABLE', 'VIEW')`
863
+ ) : [];
864
+ const typeMap = new Map(
865
+ typeRows.map((r) => [
866
+ String(r["OBJECT_NAME"] ?? ""),
867
+ String(r["OBJECT_TYPE"] ?? "TABLE")
868
+ ])
869
+ );
815
870
  const sections = [
816
871
  "## Oracle Database",
817
872
  "",
@@ -819,6 +874,7 @@ var oracleSetupFlow = {
819
874
  ""
820
875
  ];
821
876
  for (const table of targetTables) {
877
+ const heading = typeMap.get(table) === "VIEW" ? "View" : "Table";
822
878
  const cols = await runOracleSetupQuery(
823
879
  rt.params,
824
880
  `SELECT COLUMN_NAME, DATA_TYPE, NULLABLE, DATA_DEFAULT
@@ -827,7 +883,9 @@ var oracleSetupFlow = {
827
883
  AND TABLE_NAME = ${quoteLiteral(table)}
828
884
  ORDER BY COLUMN_ID`
829
885
  );
830
- sections.push(`#### Table: ${table}`, "");
886
+ const rowCount = rowCounts.get(table);
887
+ const rowCountSuffix = typeof rowCount === "number" ? ` (~${rowCount.toLocaleString()} rows)` : "";
888
+ sections.push(`#### ${heading}: ${table}${rowCountSuffix}`, "");
831
889
  sections.push("| Column | Type | Nullable | Default |");
832
890
  sections.push("|--------|------|----------|---------|");
833
891
  for (const c of cols) {
@@ -941,7 +999,7 @@ var oracleConnector = new ConnectorPlugin({
941
999
  systemPrompt: {
942
1000
  en: `### Tools
943
1001
 
944
- - \`oracle_executeQuery\`: Executes a SQL query against an Oracle Database and returns rows. Use it for schema exploration via \`USER_TABLES\` / \`USER_TAB_COLUMNS\` / \`ALL_TABLES\` and for sampling data. See the SQL Reference below for Oracle-specific syntax.
1002
+ - \`connector_oracle_executeQuery\`: Executes a SQL query against an Oracle Database and returns rows. Use it for schema exploration via \`USER_TABLES\` / \`USER_TAB_COLUMNS\` / \`ALL_TABLES\` and for sampling data. See the SQL Reference below for Oracle-specific syntax.
945
1003
 
946
1004
  ### Business Logic
947
1005
 
@@ -960,7 +1018,7 @@ The business logic type for this connector is "sql".
960
1018
  - Row-limit compatibility: the platform's server-logic schema inference may wrap your query as \`SELECT * FROM (<inner>) AS _sq LIMIT N\`. Oracle has no \`LIMIT\` keyword, so the connector detects this exact wrapper at \`query()\` time, executes \`<inner>\` directly, and slices the first N rows in JS. You do not need to handle this \u2014 but do not author your own \`LIMIT\` clauses; use \`FETCH FIRST N ROWS ONLY\`, \`OFFSET m ROWS FETCH NEXT N ROWS ONLY\`, or \`ROWNUM\` filters.`,
961
1019
  ja: `### \u30C4\u30FC\u30EB
962
1020
 
963
- - \`oracle_executeQuery\`: Oracle Database \u306B\u5BFE\u3057\u3066 SQL \u3092\u5B9F\u884C\u3057\u3001\u884C\u30C7\u30FC\u30BF\u3092\u8FD4\u3057\u307E\u3059\u3002\`USER_TABLES\` / \`USER_TAB_COLUMNS\` / \`ALL_TABLES\` \u3092\u4F7F\u3063\u305F\u30B9\u30AD\u30FC\u30DE\u63A2\u7D22\u3084\u30C7\u30FC\u30BF\u306E\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u306B\u4F7F\u3044\u307E\u3059\u3002Oracle \u56FA\u6709\u306E\u69CB\u6587\u306F\u4E0B\u90E8\u306E\u300CSQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
1021
+ - \`connector_oracle_executeQuery\`: Oracle Database \u306B\u5BFE\u3057\u3066 SQL \u3092\u5B9F\u884C\u3057\u3001\u884C\u30C7\u30FC\u30BF\u3092\u8FD4\u3057\u307E\u3059\u3002\`USER_TABLES\` / \`USER_TAB_COLUMNS\` / \`ALL_TABLES\` \u3092\u4F7F\u3063\u305F\u30B9\u30AD\u30FC\u30DE\u63A2\u7D22\u3084\u30C7\u30FC\u30BF\u306E\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u306B\u4F7F\u3044\u307E\u3059\u3002Oracle \u56FA\u6709\u306E\u69CB\u6587\u306F\u4E0B\u90E8\u306E\u300CSQL \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
964
1022
 
965
1023
  ### Business Logic
966
1024
 
@@ -232,7 +232,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
232
232
  /**
233
233
  * Create tools for connections that belong to this connector.
234
234
  * Filters connections by connectorKey internally.
235
- * Returns tools keyed as `${connectorKey}_${toolName}`.
235
+ * Returns tools keyed as `connector_${connectorKey}_${toolName}`.
236
236
  */
237
237
  createTools(connections, config, opts) {
238
238
  const myConnections = connections.filter(
@@ -242,7 +242,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
242
242
  for (const t of Object.values(this.tools)) {
243
243
  const tool = t.createTool(myConnections, config);
244
244
  const originalToModelOutput = tool.toModelOutput;
245
- result[`${this.connectorKey}_${t.name}`] = {
245
+ result[`connector_${this.connectorKey}_${t.name}`] = {
246
246
  ...tool,
247
247
  toModelOutput: async (options) => {
248
248
  if (!originalToModelOutput) {
@@ -298,19 +298,34 @@ async function runSetupFlow(flow, params, ctx, config) {
298
298
  };
299
299
  let state = flow.initialState();
300
300
  let answerIdx = 0;
301
+ const pendingParameterUpdates = [];
301
302
  for (const step of flow.steps) {
302
303
  const ans = ctx.answers[answerIdx];
303
304
  if (ans && ans.questionSlug === step.slug) {
304
305
  state = step.applyAnswer(state, ans.answer);
306
+ if (step.toParameterUpdates) {
307
+ pendingParameterUpdates.push(...step.toParameterUpdates(state));
308
+ }
305
309
  answerIdx += 1;
306
310
  continue;
307
311
  }
312
+ const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
308
313
  if (step.type === "text") {
314
+ if (step.fetchOptions) {
315
+ const options2 = await step.fetchOptions(state, runtime);
316
+ if (options2.length === 0) {
317
+ continue;
318
+ }
319
+ }
309
320
  return {
310
321
  type: "nextQuestion",
311
322
  questionSlug: step.slug,
312
323
  question: step.question[ctx.language],
313
- questionType: "text"
324
+ questionType: "text",
325
+ allowFreeText: resolvedAllowFreeText,
326
+ ...pendingParameterUpdates.length > 0 && {
327
+ parameterUpdates: pendingParameterUpdates
328
+ }
314
329
  };
315
330
  }
316
331
  const options = step.fetchOptions ? await step.fetchOptions(state, runtime) : [];
@@ -322,11 +337,21 @@ async function runSetupFlow(flow, params, ctx, config) {
322
337
  questionSlug: step.slug,
323
338
  question: step.question[ctx.language],
324
339
  questionType: step.type,
325
- options
340
+ options,
341
+ allowFreeText: resolvedAllowFreeText,
342
+ ...pendingParameterUpdates.length > 0 && {
343
+ parameterUpdates: pendingParameterUpdates
344
+ }
326
345
  };
327
346
  }
328
347
  const dataInvestigationResult = await flow.finalize(state, runtime);
329
- return { type: "fulfilled", dataInvestigationResult };
348
+ return {
349
+ type: "fulfilled",
350
+ dataInvestigationResult,
351
+ ...pendingParameterUpdates.length > 0 && {
352
+ parameterUpdates: pendingParameterUpdates
353
+ }
354
+ };
330
355
  }
331
356
  async function resolveSetupSelection(params) {
332
357
  const { selected, allSentinel, fetchAll, limit } = params;
@@ -508,27 +533,27 @@ var outlookOnboarding = new ConnectorOnboarding({
508
533
  },
509
534
  dataOverviewInstructions: {
510
535
  en: `Mail
511
- 1. Call outlook-oauth_request with GET /me/mailFolders to list mail folders
512
- 2. Call outlook-oauth_request with GET /me/messages?$top=5&$select=id,subject,from,receivedDateTime,conversationId to sample recent messages
513
- 3. Call outlook-oauth_request with GET /me/messages/{id} for an interesting message to inspect the full payload
514
- 4. Call outlook-oauth_request with GET /me/mailFolders/{folderId}/messages?$top=5 to drill into a specific folder
515
- 5. For threading, call outlook-oauth_request with GET /me/messages?$filter=conversationId%20eq%20'<id>'&$orderby=receivedDateTime%20asc to pull every message in a conversation
536
+ 1. Call connector_outlook-oauth_request with GET /me/mailFolders to list mail folders
537
+ 2. Call connector_outlook-oauth_request with GET /me/messages?$top=5&$select=id,subject,from,receivedDateTime,conversationId to sample recent messages
538
+ 3. Call connector_outlook-oauth_request with GET /me/messages/{id} for an interesting message to inspect the full payload
539
+ 4. Call connector_outlook-oauth_request with GET /me/mailFolders/{folderId}/messages?$top=5 to drill into a specific folder
540
+ 5. For threading, call connector_outlook-oauth_request with GET /me/messages?$filter=conversationId%20eq%20'<id>'&$orderby=receivedDateTime%20asc to pull every message in a conversation
516
541
 
517
542
  Calendar
518
- 6. Call outlook-oauth_request with GET /me/calendars to list calendars (default + shared)
519
- 7. Call outlook-oauth_request with GET /me/calendarView?startDateTime=<startISO>&endDateTime=<endISO>&$top=5&$select=id,subject,start,end,attendees to sample upcoming occurrences (expands recurring events)
520
- 8. Call outlook-oauth_request with GET /me/events/{eventId} for an interesting event to inspect attendees, body, and location`,
543
+ 6. Call connector_outlook-oauth_request with GET /me/calendars to list calendars (default + shared)
544
+ 7. Call connector_outlook-oauth_request with GET /me/calendarView?startDateTime=<startISO>&endDateTime=<endISO>&$top=5&$select=id,subject,start,end,attendees to sample upcoming occurrences (expands recurring events)
545
+ 8. Call connector_outlook-oauth_request with GET /me/events/{eventId} for an interesting event to inspect attendees, body, and location`,
521
546
  ja: `\u30E1\u30FC\u30EB
522
- 1. outlook-oauth_request \u3067 GET /me/mailFolders \u3092\u547C\u3073\u51FA\u3057\u3001\u30E1\u30FC\u30EB\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\u3092\u53D6\u5F97
523
- 2. outlook-oauth_request \u3067 GET /me/messages?$top=5&$select=id,subject,from,receivedDateTime,conversationId \u3092\u547C\u3073\u51FA\u3057\u3001\u6700\u65B0\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0
524
- 3. \u8208\u5473\u306E\u3042\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3064\u3044\u3066 outlook-oauth_request \u3067 GET /me/messages/{id} \u3092\u547C\u3073\u51FA\u3057\u3001\u30DA\u30A4\u30ED\u30FC\u30C9\u5168\u4F53\u3092\u78BA\u8A8D
525
- 4. outlook-oauth_request \u3067 GET /me/mailFolders/{folderId}/messages?$top=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u7279\u5B9A\u30D5\u30A9\u30EB\u30C0\u306E\u4E2D\u8EAB\u3092\u78BA\u8A8D
526
- 5. \u30B9\u30EC\u30C3\u30C9\u3092\u8FFD\u3046\u5834\u5408\u306F outlook-oauth_request \u3067 GET /me/messages?$filter=conversationId%20eq%20'<id>'&$orderby=receivedDateTime%20asc \u3092\u547C\u3073\u51FA\u3057\u3001\u4F1A\u8A71\u306B\u542B\u307E\u308C\u308B\u5168\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u53D6\u5F97
547
+ 1. connector_outlook-oauth_request \u3067 GET /me/mailFolders \u3092\u547C\u3073\u51FA\u3057\u3001\u30E1\u30FC\u30EB\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\u3092\u53D6\u5F97
548
+ 2. connector_outlook-oauth_request \u3067 GET /me/messages?$top=5&$select=id,subject,from,receivedDateTime,conversationId \u3092\u547C\u3073\u51FA\u3057\u3001\u6700\u65B0\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0
549
+ 3. \u8208\u5473\u306E\u3042\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3064\u3044\u3066 connector_outlook-oauth_request \u3067 GET /me/messages/{id} \u3092\u547C\u3073\u51FA\u3057\u3001\u30DA\u30A4\u30ED\u30FC\u30C9\u5168\u4F53\u3092\u78BA\u8A8D
550
+ 4. connector_outlook-oauth_request \u3067 GET /me/mailFolders/{folderId}/messages?$top=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u7279\u5B9A\u30D5\u30A9\u30EB\u30C0\u306E\u4E2D\u8EAB\u3092\u78BA\u8A8D
551
+ 5. \u30B9\u30EC\u30C3\u30C9\u3092\u8FFD\u3046\u5834\u5408\u306F connector_outlook-oauth_request \u3067 GET /me/messages?$filter=conversationId%20eq%20'<id>'&$orderby=receivedDateTime%20asc \u3092\u547C\u3073\u51FA\u3057\u3001\u4F1A\u8A71\u306B\u542B\u307E\u308C\u308B\u5168\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u53D6\u5F97
527
552
 
528
553
  \u30AB\u30EC\u30F3\u30C0\u30FC
529
- 6. outlook-oauth_request \u3067 GET /me/calendars \u3092\u547C\u3073\u51FA\u3057\u3001\u30AB\u30EC\u30F3\u30C0\u30FC\u4E00\u89A7 (\u30C7\u30D5\u30A9\u30EB\u30C8 + \u5171\u6709) \u3092\u53D6\u5F97
530
- 7. outlook-oauth_request \u3067 GET /me/calendarView?startDateTime=<startISO>&endDateTime=<endISO>&$top=5&$select=id,subject,start,end,attendees \u3092\u547C\u3073\u51FA\u3057\u3001\u76F4\u8FD1\u306E occurrence \u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0 (\u7E70\u308A\u8FD4\u3057\u30A4\u30D9\u30F3\u30C8\u3092\u5C55\u958B)
531
- 8. \u8208\u5473\u306E\u3042\u308B\u30A4\u30D9\u30F3\u30C8\u306B\u3064\u3044\u3066 outlook-oauth_request \u3067 GET /me/events/{eventId} \u3092\u547C\u3073\u51FA\u3057\u3001\u53C2\u52A0\u8005\u30FB\u672C\u6587\u30FB\u5834\u6240\u3092\u78BA\u8A8D`
554
+ 6. connector_outlook-oauth_request \u3067 GET /me/calendars \u3092\u547C\u3073\u51FA\u3057\u3001\u30AB\u30EC\u30F3\u30C0\u30FC\u4E00\u89A7 (\u30C7\u30D5\u30A9\u30EB\u30C8 + \u5171\u6709) \u3092\u53D6\u5F97
555
+ 7. connector_outlook-oauth_request \u3067 GET /me/calendarView?startDateTime=<startISO>&endDateTime=<endISO>&$top=5&$select=id,subject,start,end,attendees \u3092\u547C\u3073\u51FA\u3057\u3001\u76F4\u8FD1\u306E occurrence \u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0 (\u7E70\u308A\u8FD4\u3057\u30A4\u30D9\u30F3\u30C8\u3092\u5C55\u958B)
556
+ 8. \u8208\u5473\u306E\u3042\u308B\u30A4\u30D9\u30F3\u30C8\u306B\u3064\u3044\u3066 connector_outlook-oauth_request \u3067 GET /me/events/{eventId} \u3092\u547C\u3073\u51FA\u3057\u3001\u53C2\u52A0\u8005\u30FB\u672C\u6587\u30FB\u5834\u6240\u3092\u78BA\u8A8D`
532
557
  }
533
558
  });
534
559
 
@@ -642,7 +667,7 @@ var outlookOauthConnector = new ConnectorPlugin({
642
667
  systemPrompt: {
643
668
  en: `### Tools
644
669
 
645
- - \`outlook-oauth_request\`: The only way to call Microsoft Graph for Outlook (read-only). Use it to fetch the user profile (\`/me\`), list mail folders (\`/me/mailFolders\`), read messages (\`/me/messages\`, \`/me/messages/{id}\`), fetch attachments (\`/me/messages/{id}/attachments\`), list calendars (\`/me/calendars\`), and read events (\`/me/events\`, \`/me/calendarView\`). Authentication is configured automatically via OAuth.
670
+ - \`connector_outlook-oauth_request\`: The only way to call Microsoft Graph for Outlook (read-only). Use it to fetch the user profile (\`/me\`), list mail folders (\`/me/mailFolders\`), read messages (\`/me/messages\`, \`/me/messages/{id}\`), fetch attachments (\`/me/messages/{id}/attachments\`), list calendars (\`/me/calendars\`), and read events (\`/me/events\`, \`/me/calendarView\`). Authentication is configured automatically via OAuth.
646
671
 
647
672
  ### Microsoft Graph Reference (Outlook Mail)
648
673
 
@@ -775,7 +800,7 @@ events.value.forEach(e => console.log(e.start.dateTime, e.subject));
775
800
  \`\`\``,
776
801
  ja: `### \u30C4\u30FC\u30EB
777
802
 
778
- - \`outlook-oauth_request\`: Outlook \u5411\u3051\u306E Microsoft Graph \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\uFF08\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF09\u3002\u30E6\u30FC\u30B6\u30FC\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB (\`/me\`)\u3001\u30E1\u30FC\u30EB\u30D5\u30A9\u30EB\u30C0 (\`/me/mailFolders\`)\u3001\u30E1\u30C3\u30BB\u30FC\u30B8 (\`/me/messages\`)\u3001\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB (\`/me/messages/{id}/attachments\`)\u3001\u30AB\u30EC\u30F3\u30C0\u30FC (\`/me/calendars\`)\u3001\u30A4\u30D9\u30F3\u30C8 (\`/me/events\`, \`/me/calendarView\`) \u306E\u53D6\u5F97\u306B\u4F7F\u3044\u307E\u3059\u3002OAuth \u7D4C\u7531\u3067\u8A8D\u8A3C\u306F\u81EA\u52D5\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
803
+ - \`connector_outlook-oauth_request\`: Outlook \u5411\u3051\u306E Microsoft Graph \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\uFF08\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF09\u3002\u30E6\u30FC\u30B6\u30FC\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB (\`/me\`)\u3001\u30E1\u30FC\u30EB\u30D5\u30A9\u30EB\u30C0 (\`/me/mailFolders\`)\u3001\u30E1\u30C3\u30BB\u30FC\u30B8 (\`/me/messages\`)\u3001\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB (\`/me/messages/{id}/attachments\`)\u3001\u30AB\u30EC\u30F3\u30C0\u30FC (\`/me/calendars\`)\u3001\u30A4\u30D9\u30F3\u30C8 (\`/me/events\`, \`/me/calendarView\`) \u306E\u53D6\u5F97\u306B\u4F7F\u3044\u307E\u3059\u3002OAuth \u7D4C\u7531\u3067\u8A8D\u8A3C\u306F\u81EA\u52D5\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
779
804
 
780
805
  ### Microsoft Graph \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 (Outlook \u30E1\u30FC\u30EB)
781
806