@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.
- package/dist/cli/index.js +4873 -1073
- package/dist/connectors/airtable-oauth.js +78 -11
- package/dist/connectors/airtable.js +74 -11
- package/dist/connectors/amplitude.js +38 -11
- package/dist/connectors/anthropic.js +4 -2
- package/dist/connectors/asana.js +67 -13
- package/dist/connectors/attio.js +60 -16
- package/dist/connectors/aws-billing.js +38 -11
- package/dist/connectors/azure-sql.js +64 -13
- package/dist/connectors/backlog-api-key.js +70 -18
- package/dist/connectors/clickup.js +80 -13
- package/dist/connectors/cosmosdb.js +42 -15
- package/dist/connectors/customerio.js +39 -12
- package/dist/connectors/dbt.js +716 -28
- package/dist/connectors/freshdesk.js +112 -11
- package/dist/connectors/freshsales.js +38 -11
- package/dist/connectors/freshservice.js +38 -11
- package/dist/connectors/gamma.js +47 -20
- package/dist/connectors/gemini.js +4 -2
- package/dist/connectors/github.js +42 -15
- package/dist/connectors/gmail-oauth.js +38 -13
- package/dist/connectors/gmail.js +34 -7
- package/dist/connectors/google-ads.js +38 -11
- package/dist/connectors/google-analytics-oauth.js +182 -28
- package/dist/connectors/google-analytics.js +653 -104
- package/dist/connectors/google-audit-log.js +34 -7
- package/dist/connectors/google-calendar-oauth.js +91 -18
- package/dist/connectors/google-calendar.js +91 -14
- package/dist/connectors/google-docs.js +38 -13
- package/dist/connectors/google-drive.js +60 -13
- package/dist/connectors/google-search-console-oauth.js +156 -20
- package/dist/connectors/google-sheets.js +36 -9
- package/dist/connectors/google-slides.js +38 -13
- package/dist/connectors/grafana.js +75 -13
- package/dist/connectors/hubspot-oauth.js +69 -12
- package/dist/connectors/hubspot.js +55 -12
- package/dist/connectors/influxdb.js +38 -11
- package/dist/connectors/intercom-oauth.js +100 -15
- package/dist/connectors/intercom.js +42 -15
- package/dist/connectors/jdbc.js +36 -9
- package/dist/connectors/jira-api-key.js +98 -14
- package/dist/connectors/kintone-api-token.js +96 -21
- package/dist/connectors/kintone.js +84 -14
- package/dist/connectors/linear.js +84 -15
- package/dist/connectors/linkedin-ads.js +71 -17
- package/dist/connectors/mailchimp-oauth.js +36 -9
- package/dist/connectors/mailchimp.js +36 -9
- package/dist/connectors/meta-ads-oauth.js +63 -17
- package/dist/connectors/meta-ads.js +65 -17
- package/dist/connectors/mixpanel.js +38 -11
- package/dist/connectors/monday.js +39 -12
- package/dist/connectors/mongodb.js +38 -11
- package/dist/connectors/notion-oauth.js +88 -14
- package/dist/connectors/notion.js +90 -14
- package/dist/connectors/openai.js +4 -2
- package/dist/connectors/oracle.js +78 -20
- package/dist/connectors/outlook-oauth.js +48 -23
- package/dist/connectors/powerbi-oauth.js +321 -49
- package/dist/connectors/salesforce.js +72 -12
- package/dist/connectors/semrush.js +374 -52
- package/dist/connectors/sentry.js +66 -13
- package/dist/connectors/shopify-oauth.js +71 -13
- package/dist/connectors/shopify.js +38 -11
- package/dist/connectors/sqlserver.js +64 -13
- package/dist/connectors/stripe-api-key.js +96 -18
- package/dist/connectors/stripe-oauth.js +98 -22
- package/dist/connectors/supabase.js +55 -11
- package/dist/connectors/tableau.js +262 -92
- package/dist/connectors/tiktok-ads.js +67 -19
- package/dist/connectors/wix-store.js +38 -11
- package/dist/connectors/zendesk-oauth.js +83 -15
- package/dist/connectors/zendesk.js +42 -15
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4902 -1077
- package/dist/main.js +4891 -1071
- package/dist/vite-plugin.js +4871 -1071
- 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
|
|
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[
|
|
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 {
|
|
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
|
|
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.
|
|
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
|
|
781
|
+
async function fetchTableAndViewNames(params, owner) {
|
|
755
782
|
const rows = await runOracleSetupQuery(
|
|
756
783
|
params,
|
|
757
|
-
`SELECT TABLE_NAME FROM ALL_TABLES
|
|
758
|
-
|
|
759
|
-
|
|
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
|
|
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: () =>
|
|
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
|
-
|
|
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
|
-
- \`
|
|
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
|
-
- \`
|
|
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
|
|
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[
|
|
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 {
|
|
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
|
|
512
|
-
2. Call
|
|
513
|
-
3. Call
|
|
514
|
-
4. Call
|
|
515
|
-
5. For threading, call
|
|
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
|
|
519
|
-
7. Call
|
|
520
|
-
8. Call
|
|
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.
|
|
523
|
-
2.
|
|
524
|
-
3. \u8208\u5473\u306E\u3042\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3064\u3044\u3066
|
|
525
|
-
4.
|
|
526
|
-
5. \u30B9\u30EC\u30C3\u30C9\u3092\u8FFD\u3046\u5834\u5408\u306F
|
|
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.
|
|
530
|
-
7.
|
|
531
|
-
8. \u8208\u5473\u306E\u3042\u308B\u30A4\u30D9\u30F3\u30C8\u306B\u3064\u3044\u3066
|
|
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
|
-
- \`
|
|
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
|
-
- \`
|
|
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
|
|