veryfront 0.1.607 → 0.1.608
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/esm/cli/commands/init/catalog.d.ts.map +1 -1
- package/esm/cli/commands/init/catalog.js +7 -3
- package/esm/cli/mcp/tools/catalog-tools.d.ts +1 -1
- package/esm/cli/mcp/tools/catalog-tools.d.ts.map +1 -1
- package/esm/cli/mcp/tools/catalog-tools.js +61 -145
- package/esm/cli/templates/integration-loader.d.ts +9 -1
- package/esm/cli/templates/integration-loader.d.ts.map +1 -1
- package/esm/cli/templates/integration-loader.js +14 -3
- package/esm/deno.js +1 -1
- package/esm/extensions/ext-document-kreuzberg/src/index.d.ts.map +1 -1
- package/esm/extensions/ext-document-kreuzberg/src/index.js +12 -4
- package/esm/extensions/ext-document-kreuzberg/src/kreuzberg.d.ts.map +1 -1
- package/esm/extensions/ext-document-kreuzberg/src/kreuzberg.js +3 -1
- package/esm/extensions/ext-document-kreuzberg/src/runtime.d.ts +3 -0
- package/esm/extensions/ext-document-kreuzberg/src/runtime.d.ts.map +1 -0
- package/esm/extensions/ext-document-kreuzberg/src/runtime.js +26 -0
- package/esm/extensions/ext-document-kreuzberg/src/upload-extraction-worker.js +20 -0
- package/esm/src/integrations/_data.js +1 -1
- package/esm/src/integrations/feature-flags.d.ts +12 -0
- package/esm/src/integrations/feature-flags.d.ts.map +1 -0
- package/esm/src/integrations/feature-flags.js +118 -0
- package/esm/src/integrations/index.d.ts.map +1 -1
- package/esm/src/integrations/index.js +8 -5
- package/esm/src/integrations/schema.d.ts +4 -4
- package/esm/src/oauth/index.d.ts +5 -1
- package/esm/src/oauth/index.d.ts.map +1 -1
- package/esm/src/oauth/index.js +5 -1
- package/esm/src/oauth/providers/common.d.ts +27 -25
- package/esm/src/oauth/providers/common.d.ts.map +1 -1
- package/esm/src/oauth/providers/common.js +3 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAUnE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,cAAc,EAoBrC,CAAC;AAEX,0DAA0D;AAC1D,wBAAgB,wBAAwB,IAAI,YAAY,EAAE,CAMzD;AAMD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5C;AAED,eAAO,MAAM,sBAAsB,EAAE,SAAS,mBAAmB,EAmGvD,CAAC;AAEX,2CAA2C;AAC3C,wBAAgB,kBAAkB,IAAI,iBAAiB,EAAE,CAIxD;AAED,6DAA6D;AAC7D,wBAAgB,2BAA2B,IAAI,YAAY,EAAE,CAM5D;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,IAAI,iBAAiB,EAAE,CAa5D;AAED,+DAA+D;AAC/D,wBAAgB,sCAAsC,IAAI,KAAK,CAC7D,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CACtC,CA0BA"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Shared catalog of templates and integrations
|
|
3
3
|
* Single source of truth for all CLI template/integration data
|
|
4
4
|
*/
|
|
5
|
+
import { filterVisibleIntegrations, isVisibleIntegration, } from "../../../src/integrations/feature-flags.js";
|
|
5
6
|
export const TEMPLATES = [
|
|
6
7
|
{ id: "minimal", label: "Minimal", description: "Blank canvas, no extras" },
|
|
7
8
|
{ id: "ai-agent", label: "AI Agent", description: "Agent + chat UI + streaming" },
|
|
@@ -47,7 +48,7 @@ export const INTEGRATION_CATEGORIES = [
|
|
|
47
48
|
{
|
|
48
49
|
name: "Productivity",
|
|
49
50
|
integrations: [
|
|
50
|
-
{ id: "calendar", label: "Calendar", description: "Google Calendar events" },
|
|
51
|
+
{ id: "calendar", label: "Google Calendar", description: "Google Calendar events" },
|
|
51
52
|
{ id: "notion", label: "Notion", description: "Pages, databases, blocks" },
|
|
52
53
|
{ id: "jira", label: "Jira", description: "Issues, projects, sprints" },
|
|
53
54
|
{ id: "linear", label: "Linear", description: "Issue tracking" },
|
|
@@ -133,7 +134,7 @@ export const INTEGRATION_CATEGORIES = [
|
|
|
133
134
|
];
|
|
134
135
|
/** Get all integrations as a flat array */
|
|
135
136
|
export function getAllIntegrations() {
|
|
136
|
-
return INTEGRATION_CATEGORIES.flatMap((cat) => [...cat.integrations]);
|
|
137
|
+
return filterVisibleIntegrations(INTEGRATION_CATEGORIES.flatMap((cat) => [...cat.integrations]));
|
|
137
138
|
}
|
|
138
139
|
/** Get integrations as SelectOption[] for terminal-select */
|
|
139
140
|
export function getIntegrationSelectOptions() {
|
|
@@ -162,13 +163,16 @@ export function getPopularIntegrations() {
|
|
|
162
163
|
export function getIntegrationSelectOptionsWithHeaders() {
|
|
163
164
|
const choices = [];
|
|
164
165
|
for (const category of INTEGRATION_CATEGORIES) {
|
|
166
|
+
const integrations = category.integrations.filter((integration) => isVisibleIntegration(integration.id));
|
|
167
|
+
if (integrations.length === 0)
|
|
168
|
+
continue;
|
|
165
169
|
choices.push({
|
|
166
170
|
value: `__header_${category.name}`,
|
|
167
171
|
label: `── ${category.name} ──`,
|
|
168
172
|
description: "",
|
|
169
173
|
isHeader: true,
|
|
170
174
|
});
|
|
171
|
-
for (const integration of
|
|
175
|
+
for (const integration of integrations) {
|
|
172
176
|
choices.push({
|
|
173
177
|
value: integration.id,
|
|
174
178
|
label: integration.label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/catalog-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/catalog-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAO3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAQ3C,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAqDD,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAyCD,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC3C;AAgDD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AA4CD,QAAA,MAAM,oBAAoB,4IAAoC,CAAC;AAG/D,KAAK,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;AAE9E,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAQpE,CAAC;AAMF,QAAA,MAAM,qBAAqB,4IAAoC,CAAC;AAGhE,KAAK,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAQvE,CAAC;AAMF,QAAA,MAAM,wBAAwB;;GAqB7B,CAAC;AAGF,KAAK,qBAAqB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AAEtF,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,qBAAqB,EAAE,eAAe,EAAE,CAahF,CAAC;AAMF,QAAA,MAAM,oBAAoB,4IAAoC,CAAC;AAG/D,KAAK,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;AAE9E,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAQpE,CAAC;AAMF,QAAA,MAAM,qBAAqB;;;;;GAyB1B,CAAC;AAGF,KAAK,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;AAEhF,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,kBAAkB,EAAE,mBAAmB,CAiD5E,CAAC"}
|
|
@@ -5,6 +5,9 @@ import { defineSchema, lazySchema } from "../../../src/schemas/index.js";
|
|
|
5
5
|
import { join } from "../../../src/platform/compat/path/index.js";
|
|
6
6
|
import { cwd } from "../../../src/platform/index.js";
|
|
7
7
|
import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
|
|
8
|
+
import { connectors } from "../../../src/integrations/_data.js";
|
|
9
|
+
import { filterVisibleIntegrations } from "../../../src/integrations/feature-flags.js";
|
|
10
|
+
import { INTEGRATION_CATEGORIES } from "../../commands/init/catalog.js";
|
|
8
11
|
import { directoryExists, formatError, toSlug } from "./helpers.js";
|
|
9
12
|
const EXAMPLES = [
|
|
10
13
|
{
|
|
@@ -94,148 +97,47 @@ const TEMPLATES = [
|
|
|
94
97
|
features: ["App Router", "Tailwind CSS", "TypeScript"],
|
|
95
98
|
},
|
|
96
99
|
];
|
|
97
|
-
|
|
98
|
-
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
authType: "oauth2",
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
name: "docs-google",
|
|
142
|
-
displayName: "Google Docs",
|
|
143
|
-
category: "productivity",
|
|
144
|
-
description: "Read and edit documents",
|
|
145
|
-
authType: "oauth2",
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
name: "github",
|
|
149
|
-
displayName: "GitHub",
|
|
150
|
-
category: "development",
|
|
151
|
-
description: "Manage repos, issues, and PRs",
|
|
152
|
-
authType: "oauth2",
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
name: "gitlab",
|
|
156
|
-
displayName: "GitLab",
|
|
157
|
-
category: "development",
|
|
158
|
-
description: "Manage projects and pipelines",
|
|
159
|
-
authType: "oauth2",
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
name: "jira",
|
|
163
|
-
displayName: "Jira",
|
|
164
|
-
category: "development",
|
|
165
|
-
description: "Track issues and projects",
|
|
166
|
-
authType: "oauth2",
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
name: "linear",
|
|
170
|
-
displayName: "Linear",
|
|
171
|
-
category: "development",
|
|
172
|
-
description: "Issue tracking and project management",
|
|
173
|
-
authType: "oauth2",
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
name: "sentry",
|
|
177
|
-
displayName: "Sentry",
|
|
178
|
-
category: "development",
|
|
179
|
-
description: "Error tracking and monitoring",
|
|
180
|
-
authType: "api-key",
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
name: "teams",
|
|
184
|
-
displayName: "Microsoft Teams",
|
|
185
|
-
category: "communication",
|
|
186
|
-
description: "Chat and collaboration",
|
|
187
|
-
authType: "oauth2",
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
name: "outlook",
|
|
191
|
-
displayName: "Outlook",
|
|
192
|
-
category: "communication",
|
|
193
|
-
description: "Email and calendar",
|
|
194
|
-
authType: "oauth2",
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
name: "zoom",
|
|
198
|
-
displayName: "Zoom",
|
|
199
|
-
category: "communication",
|
|
200
|
-
description: "Video meetings",
|
|
201
|
-
authType: "oauth2",
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
name: "airtable",
|
|
205
|
-
displayName: "Airtable",
|
|
206
|
-
category: "data",
|
|
207
|
-
description: "Database and spreadsheets",
|
|
208
|
-
authType: "oauth2",
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
name: "snowflake",
|
|
212
|
-
displayName: "Snowflake",
|
|
213
|
-
category: "data",
|
|
214
|
-
description: "Data warehouse queries",
|
|
215
|
-
authType: "api-key",
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
name: "supabase",
|
|
219
|
-
displayName: "Supabase",
|
|
220
|
-
category: "data",
|
|
221
|
-
description: "Database and auth",
|
|
222
|
-
authType: "api-key",
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
name: "neon",
|
|
226
|
-
displayName: "Neon",
|
|
227
|
-
category: "data",
|
|
228
|
-
description: "Serverless Postgres",
|
|
229
|
-
authType: "oauth2",
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
name: "anthropic",
|
|
233
|
-
displayName: "Anthropic",
|
|
234
|
-
category: "ai",
|
|
235
|
-
description: "Claude AI models",
|
|
236
|
-
authType: "api-key",
|
|
237
|
-
},
|
|
238
|
-
];
|
|
100
|
+
function getMcpCategory(categoryName) {
|
|
101
|
+
switch (categoryName) {
|
|
102
|
+
case "Communication":
|
|
103
|
+
return "communication";
|
|
104
|
+
case "Productivity":
|
|
105
|
+
return "productivity";
|
|
106
|
+
case "Development":
|
|
107
|
+
return "development";
|
|
108
|
+
case "Storage":
|
|
109
|
+
return "data";
|
|
110
|
+
case "Infrastructure":
|
|
111
|
+
return "infrastructure";
|
|
112
|
+
case "Sales & CRM":
|
|
113
|
+
return "sales";
|
|
114
|
+
case "Support":
|
|
115
|
+
return "support";
|
|
116
|
+
case "Finance":
|
|
117
|
+
return "finance";
|
|
118
|
+
case "Marketing":
|
|
119
|
+
return "marketing";
|
|
120
|
+
case "Design":
|
|
121
|
+
return "design";
|
|
122
|
+
case "AI Providers":
|
|
123
|
+
return "ai";
|
|
124
|
+
default:
|
|
125
|
+
return "other";
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const connectorByName = new Map(connectors.map((connector) => [connector.name, connector]));
|
|
129
|
+
const INTEGRATIONS = INTEGRATION_CATEGORIES.flatMap((category) => category.integrations.flatMap((integration) => {
|
|
130
|
+
const connector = connectorByName.get(integration.id);
|
|
131
|
+
if (!connector)
|
|
132
|
+
return [];
|
|
133
|
+
return [{
|
|
134
|
+
name: integration.id,
|
|
135
|
+
displayName: integration.label,
|
|
136
|
+
category: getMcpCategory(category.name),
|
|
137
|
+
description: integration.description,
|
|
138
|
+
authType: connector.auth.type,
|
|
139
|
+
}];
|
|
140
|
+
}));
|
|
239
141
|
const USECASES = [
|
|
240
142
|
{
|
|
241
143
|
name: "productivity",
|
|
@@ -304,7 +206,20 @@ export const vfListTemplates = {
|
|
|
304
206
|
// ============================================================================
|
|
305
207
|
const getListIntegrationsInput = defineSchema((v) => v.object({
|
|
306
208
|
category: v
|
|
307
|
-
.enum([
|
|
209
|
+
.enum([
|
|
210
|
+
"all",
|
|
211
|
+
"productivity",
|
|
212
|
+
"development",
|
|
213
|
+
"communication",
|
|
214
|
+
"data",
|
|
215
|
+
"infrastructure",
|
|
216
|
+
"sales",
|
|
217
|
+
"support",
|
|
218
|
+
"finance",
|
|
219
|
+
"marketing",
|
|
220
|
+
"design",
|
|
221
|
+
"ai",
|
|
222
|
+
])
|
|
308
223
|
.optional()
|
|
309
224
|
.default("all")
|
|
310
225
|
.describe("Filter integrations by category"),
|
|
@@ -318,9 +233,10 @@ export const vfListIntegrations = {
|
|
|
318
233
|
inputSchema: listIntegrationsInput,
|
|
319
234
|
execute: (input) => {
|
|
320
235
|
const { category } = input;
|
|
236
|
+
const integrations = filterVisibleIntegrations(INTEGRATIONS);
|
|
321
237
|
if (category === "all")
|
|
322
|
-
return Promise.resolve(
|
|
323
|
-
return Promise.resolve(
|
|
238
|
+
return Promise.resolve(integrations);
|
|
239
|
+
return Promise.resolve(integrations.filter((i) => i.category === category));
|
|
324
240
|
},
|
|
325
241
|
};
|
|
326
242
|
// ============================================================================
|
|
@@ -9,9 +9,17 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { IntegrationConfig, IntegrationName, ResolvedIntegration, TemplateFile, UseCaseConfig, UseCaseName } from "./types.js";
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* All declared integrations. Unsupported integrations stay in the source tree,
|
|
13
|
+
* but are only available when explicitly enabled with
|
|
14
|
+
* VERYFRONT_EXPERIMENTAL_INTEGRATIONS.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ALL_AVAILABLE_INTEGRATIONS: IntegrationName[];
|
|
17
|
+
/**
|
|
18
|
+
* Default available integrations that can be added via --integrations flag.
|
|
19
|
+
* Prefer getAvailableIntegrations() when runtime feature-flag changes matter.
|
|
13
20
|
*/
|
|
14
21
|
export declare const AVAILABLE_INTEGRATIONS: IntegrationName[];
|
|
22
|
+
export declare function getAvailableIntegrations(): IntegrationName[];
|
|
15
23
|
/**
|
|
16
24
|
* Available use-cases that can be selected via --usecase flag
|
|
17
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-loader.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/integration-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"integration-loader.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/integration-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,eAAe,EAkDvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAEK,CAAC;AAE1D,wBAAgB,wBAAwB,IAAI,eAAe,EAAE,CAI5D;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAM3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,CA8C/D,CAAC;AAMF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAanC;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAOrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG;IACrE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAIA;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,gBAAgB,EAAE,eAAe,EAAE,GAClC,OAAO,CAAC;IACT,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAkBD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUjF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAExE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,gBAAgB,EAAE,eAAe,EAAE,GAClC,OAAO,CACR,KAAK,CAAC;IACJ,WAAW,EAAE,eAAe,CAAC;IAC7B,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC,CACH,CAcA;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAE/E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAE7E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,YAAY,EAAE,CAwZxD"}
|
|
@@ -8,12 +8,15 @@
|
|
|
8
8
|
* - Prompt/action loading
|
|
9
9
|
*/
|
|
10
10
|
import { createFileSystem, join } from "../../src/fs/index.js";
|
|
11
|
+
import { filterVisibleIntegrations } from "../../src/integrations/feature-flags.js";
|
|
11
12
|
import { loadTemplateFromDirectory } from "./loader.js";
|
|
12
13
|
import { buildIntegrationDirectory, buildUnknownIntegrationErrors, mergeIntegrationFiles, resolveIntegrationModuleDir, } from "./integration-loader-helpers.js";
|
|
13
14
|
/**
|
|
14
|
-
*
|
|
15
|
+
* All declared integrations. Unsupported integrations stay in the source tree,
|
|
16
|
+
* but are only available when explicitly enabled with
|
|
17
|
+
* VERYFRONT_EXPERIMENTAL_INTEGRATIONS.
|
|
15
18
|
*/
|
|
16
|
-
export const
|
|
19
|
+
export const ALL_AVAILABLE_INTEGRATIONS = [
|
|
17
20
|
"gmail",
|
|
18
21
|
"slack",
|
|
19
22
|
"github",
|
|
@@ -64,6 +67,14 @@ export const AVAILABLE_INTEGRATIONS = [
|
|
|
64
67
|
"anthropic",
|
|
65
68
|
"aws",
|
|
66
69
|
];
|
|
70
|
+
/**
|
|
71
|
+
* Default available integrations that can be added via --integrations flag.
|
|
72
|
+
* Prefer getAvailableIntegrations() when runtime feature-flag changes matter.
|
|
73
|
+
*/
|
|
74
|
+
export const AVAILABLE_INTEGRATIONS = filterVisibleIntegrations(ALL_AVAILABLE_INTEGRATIONS.map((name) => ({ id: name }))).map((integration) => integration.id);
|
|
75
|
+
export function getAvailableIntegrations() {
|
|
76
|
+
return filterVisibleIntegrations(ALL_AVAILABLE_INTEGRATIONS.map((name) => ({ id: name }))).map((integration) => integration.id);
|
|
77
|
+
}
|
|
67
78
|
/**
|
|
68
79
|
* Available use-cases that can be selected via --usecase flag
|
|
69
80
|
*/
|
|
@@ -161,7 +172,7 @@ export async function loadIntegration(integrationName) {
|
|
|
161
172
|
* Validate integration names
|
|
162
173
|
*/
|
|
163
174
|
export function validateIntegrations(integrations) {
|
|
164
|
-
const errors = buildUnknownIntegrationErrors(integrations,
|
|
175
|
+
const errors = buildUnknownIntegrationErrors(integrations, getAvailableIntegrations());
|
|
165
176
|
return { valid: errors.length === 0, errors };
|
|
166
177
|
}
|
|
167
178
|
/**
|
package/esm/deno.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-document-kreuzberg/src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-document-kreuzberg/src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAsDrG,qBAAa,0BAA2B,YAAW,iBAAiB;IAClE,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIxC,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAW9E;AAED,QAAA,MAAM,oBAAoB,EAAE,gBAkB3B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -8,13 +8,19 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
10
10
|
import { loadKreuzberg } from "./kreuzberg.js";
|
|
11
|
+
import { isDeno } from "./runtime.js";
|
|
11
12
|
/** Maximum time to wait for document text extraction before aborting. */
|
|
12
13
|
const EXTRACTION_TIMEOUT_MS = 30_000;
|
|
13
14
|
function extractInWorkerDeno(buffer, mimeType) {
|
|
14
15
|
return new Promise((resolve, reject) => {
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
|
|
16
|
+
// The worker ships as raw TypeScript in the compiled binary and from source
|
|
17
|
+
// (where `compile-binary.ts` force-includes it), but as transpiled JS in the
|
|
18
|
+
// npm package consumed via `deno run npm:veryfront`. Pick the sibling that
|
|
19
|
+
// matches whichever build is executing this module.
|
|
20
|
+
const workerFile = globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url.endsWith(".ts")
|
|
21
|
+
? "./upload-extraction-worker.ts"
|
|
22
|
+
: "./upload-extraction-worker.js";
|
|
23
|
+
const workerUrl = new URL(workerFile, globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
|
|
18
24
|
const worker = new Worker(workerUrl, { type: "module" });
|
|
19
25
|
const timer = dntShim.setTimeout(() => {
|
|
20
26
|
worker.terminate();
|
|
@@ -44,7 +50,9 @@ export class KreuzbergDocumentExtractor {
|
|
|
44
50
|
return loadKreuzberg();
|
|
45
51
|
}
|
|
46
52
|
async extractInWorker(buffer, mimeType) {
|
|
47
|
-
|
|
53
|
+
// Only a real Deno runtime gets the isolated Worker; Node/Bun extract
|
|
54
|
+
// in-process via @kreuzberg/node. See ./runtime.ts for why a bare `Deno`
|
|
55
|
+
// check is unreliable in the dnt npm build.
|
|
48
56
|
if (!isDeno) {
|
|
49
57
|
const { extractBytes } = await loadKreuzberg();
|
|
50
58
|
const result = await extractBytes(new Uint8Array(buffer), mimeType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kreuzberg.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-document-kreuzberg/src/kreuzberg.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"kreuzberg.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-document-kreuzberg/src/kreuzberg.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAwBlF,wBAAsB,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA2BjE"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* @module extensions/ext-document-kreuzberg/kreuzberg
|
|
10
10
|
*/
|
|
11
11
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
12
|
+
import { isDeno } from "./runtime.js";
|
|
12
13
|
// deno-lint-ignore no-explicit-any
|
|
13
14
|
async function loadKreuzbergNode() {
|
|
14
15
|
try {
|
|
@@ -22,7 +23,8 @@ async function loadKreuzbergNode() {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
export async function loadKreuzberg() {
|
|
25
|
-
|
|
26
|
+
// Node/Bun load the native @kreuzberg/node; only a real Deno runtime uses the
|
|
27
|
+
// WASM build. See ./runtime.ts for why a bare `Deno` check is unreliable here.
|
|
26
28
|
if (!isDeno) {
|
|
27
29
|
return loadKreuzbergNode();
|
|
28
30
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-document-kreuzberg/src/runtime.ts"],"names":[],"mappings":"AAoCA,uEAAuE;AACvE,eAAO,MAAM,MAAM,EAAE,OAA+D,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime detection — inlined from src/platform/compat/runtime.ts so the
|
|
3
|
+
* extension stays dependency-free on core (mirrors ext-bundler-esbuild).
|
|
4
|
+
*
|
|
5
|
+
* The Node check is what makes this correct in the dnt npm build: dnt's
|
|
6
|
+
* `@deno/shim-deno` polyfill makes a bare `Deno` reference truthy on Node/Bun,
|
|
7
|
+
* but `hasNodeProcess()` short-circuits `isDeno` to false there regardless.
|
|
8
|
+
*
|
|
9
|
+
* @module extensions/ext-document-kreuzberg/runtime
|
|
10
|
+
*/
|
|
11
|
+
import * as dntShim from "../../../_dnt.shims.js";
|
|
12
|
+
function hasRealDeno() {
|
|
13
|
+
return (typeof dntShim.Deno !== "undefined" &&
|
|
14
|
+
typeof dntShim.Deno.version === "object" &&
|
|
15
|
+
typeof dntShim.Deno.build === "object" &&
|
|
16
|
+
typeof dntShim.Deno.build.os === "string");
|
|
17
|
+
}
|
|
18
|
+
function hasBunGlobal() {
|
|
19
|
+
return dntShim.dntGlobalThis.Bun != null;
|
|
20
|
+
}
|
|
21
|
+
function hasNodeProcess() {
|
|
22
|
+
const g = dntShim.dntGlobalThis;
|
|
23
|
+
return g.process?.versions?.node != null && !g.process?.versions?.deno;
|
|
24
|
+
}
|
|
25
|
+
/** True only in a real Deno runtime — not the dnt shim on Node/Bun. */
|
|
26
|
+
export const isDeno = !hasNodeProcess() && !hasBunGlobal() && hasRealDeno();
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { loadKreuzberg } from "./kreuzberg.js";
|
|
2
|
+
self.onmessage = async (event) => {
|
|
3
|
+
if (event.origin && event.origin !== self.location.origin) {
|
|
4
|
+
self.postMessage(
|
|
5
|
+
{
|
|
6
|
+
error: "Rejected document extraction request from invalid origin"
|
|
7
|
+
}
|
|
8
|
+
);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
const { buffer, mimeType } = event.data;
|
|
13
|
+
const { extractBytes } = await loadKreuzberg();
|
|
14
|
+
const result = await extractBytes(new Uint8Array(buffer), mimeType);
|
|
15
|
+
self.postMessage({ content: result.content });
|
|
16
|
+
} catch (err) {
|
|
17
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
18
|
+
self.postMessage({ error: message });
|
|
19
|
+
}
|
|
20
|
+
};
|
|
@@ -21,7 +21,7 @@ export const connectors = [
|
|
|
21
21
|
{ "name": "outlook", "displayName": "Microsoft Outlook", "icon": "outlook.svg", "description": "Read, send, and manage Outlook emails", "auth": { "type": "oauth2", "provider": "microsoft", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token", "scopes": ["Mail.Read", "Mail.Send", "Mail.ReadWrite", "offline_access"], "tokenAuthMethod": "body", "requiredApis": [{ "name": "Microsoft Graph API", "enableUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }] }, "envVars": [{ "name": "MICROSOFT_CLIENT_ID", "description": "Microsoft Azure App Client ID (Application ID)", "required": true, "sensitive": false, "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }, { "name": "MICROSOFT_CLIENT_SECRET", "description": "Microsoft Azure App Client Secret", "required": true, "sensitive": true, "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }], "tools": [{ "id": "list_emails", "name": "List Emails", "description": "List recent emails from inbox or a specific folder", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/mailFolders/{folderId}/messages", "params": { "folderId": { "type": "string", "in": "path", "description": "Mail folder ID or well-known name", "required": true, "default": "inbox" }, "$top": { "type": "number", "in": "query", "description": "Maximum messages to return", "default": 25 }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" }, "$orderby": { "type": "string", "in": "query", "description": "Sort expression", "default": "receivedDateTime desc" }, "$filter": { "type": "string", "in": "query", "description": "OData filter expression" } }, "response": { "transform": "value" } } }, { "id": "get_email", "name": "Get Email", "description": "Get detailed information about a specific email", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/messages/{messageId}", "params": { "messageId": { "type": "string", "in": "path", "description": "Microsoft Graph message ID", "required": true }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" } } } }, { "id": "send_email", "name": "Send Email", "description": "Send a new email message", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://graph.microsoft.com/v1.0/me/sendMail", "body": { "message": { "type": "object", "description": "Microsoft Graph message object with subject, body, toRecipients, etc.", "required": true }, "saveToSentItems": { "type": "boolean", "description": "Save sent message to Sent Items", "default": true } } } }, { "id": "search_emails", "name": "Search Emails", "description": "Search emails by query, subject, sender, or date", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/messages", "params": { "$search": { "type": "string", "in": "query", "description": "Search query, e.g. \"subject:roadmap\"", "required": true }, "$top": { "type": "number", "in": "query", "description": "Maximum messages to return", "default": 25 }, "$select": { "type": "string", "in": "query", "description": "Comma-separated message fields to return" } }, "response": { "transform": "value" } } }, { "id": "list_folders", "name": "List Folders", "description": "List all mail folders in the mailbox", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/me/mailFolders", "params": { "includeHiddenFolders": { "type": "boolean", "in": "query", "description": "Include hidden folders", "default": false }, "$top": { "type": "number", "in": "query", "description": "Maximum folders to return", "default": 100 } }, "response": { "transform": "value" } } }], "prompts": [{ "id": "check_emails", "title": "Check my emails", "prompt": "List my recent unread emails and summarize the most important ones.", "category": "productivity", "icon": "mail" }, { "id": "search_emails", "title": "Search my emails", "prompt": "Search my emails for specific topics, senders, or date ranges.", "category": "productivity", "icon": "search" }, { "id": "draft_email", "title": "Draft an email", "prompt": "Help me draft a professional email with proper formatting and tone.", "category": "productivity", "icon": "compose" }], "suggestedWith": ["teams", "calendar", "gmail"] },
|
|
22
22
|
{ "name": "posthog", "displayName": "PostHog", "icon": "posthog.svg", "description": "Access analytics, feature flags, and user insights from PostHog", "auth": { "type": "api-key", "requiredApis": [{ "name": "PostHog API", "enableUrl": "https://app.posthog.com/project/settings" }], "keyName": "POSTHOG_API_KEY", "headerName": "Authorization", "headerPrefix": "Bearer" }, "envVars": [{ "name": "POSTHOG_API_KEY", "description": "PostHog Personal API Key", "required": true, "sensitive": true, "docsUrl": "https://posthog.com/docs/api/overview" }, { "name": "POSTHOG_HOST", "description": "PostHog API host (defaults to https://app.posthog.com)", "required": false, "sensitive": false, "docsUrl": "https://posthog.com/docs/self-host" }], "tools": [{ "id": "get_trends", "name": "Get Trends", "description": "Retrieve event trends and analytics data", "requiresWrite": false }, { "id": "list_feature_flags", "name": "List Feature Flags", "description": "List all feature flags in your PostHog project", "requiresWrite": false }, { "id": "list_persons", "name": "List Persons", "description": "List persons/users tracked in PostHog", "requiresWrite": false }, { "id": "capture_event", "name": "Capture Event", "description": "Track a custom event in PostHog", "requiresWrite": true }], "prompts": [{ "id": "trend_analysis", "title": "Trend analysis", "prompt": "Show me the trends for key events in my PostHog project over the last 7 days.", "category": "analytics", "icon": "chart" }, { "id": "feature_flag_status", "title": "Feature flag status", "prompt": "List all active feature flags and their current rollout status.", "category": "analytics", "icon": "flag" }, { "id": "user_insights", "title": "User insights", "prompt": "Give me insights about recent user activity and top users in my PostHog project.", "category": "analytics", "icon": "users" }], "suggestedWith": ["slack", "analytics", "monitoring"] },
|
|
23
23
|
{ "name": "salesforce", "displayName": "Salesforce", "icon": "salesforce.svg", "description": "Manage accounts, contacts, opportunities, and leads in your Salesforce CRM", "auth": { "type": "oauth2", "provider": "salesforce", "authorizationUrl": "https://login.salesforce.com/services/oauth2/authorize", "tokenUrl": "https://login.salesforce.com/services/oauth2/token", "scopes": ["api", "refresh_token", "offline_access"], "tokenAuthMethod": "request_body", "requiredApis": [{ "name": "Salesforce Connected App", "enableUrl": "https://login.salesforce.com/" }] }, "envVars": [{ "name": "SALESFORCE_CLIENT_ID", "description": "Salesforce OAuth Consumer Key (from your Connected App)", "required": true, "sensitive": false, "docsUrl": "https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm" }, { "name": "SALESFORCE_CLIENT_SECRET", "description": "Salesforce OAuth Consumer Secret", "required": true, "sensitive": true, "docsUrl": "https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm" }], "tools": [{ "id": "list_accounts", "name": "List Accounts", "description": "List accounts from your Salesforce CRM", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/query", "params": { "q": { "type": "string", "in": "query", "description": "SOQL query for accounts", "default": "SELECT Id, Name, Type, Industry, Phone, Website FROM Account ORDER BY LastModifiedDate DESC LIMIT 50" } }, "response": { "transform": "records" } } }, { "id": "get_account", "name": "Get Account", "description": "Get detailed information about a specific account", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/sobjects/Account/{accountId}", "params": { "accountId": { "type": "string", "in": "path", "description": "Salesforce Account ID", "required": true } } } }, { "id": "list_contacts", "name": "List Contacts", "description": "List contacts from your Salesforce CRM", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/query", "params": { "q": { "type": "string", "in": "query", "description": "SOQL query for contacts", "default": "SELECT Id, FirstName, LastName, Email, Phone, AccountId FROM Contact ORDER BY LastModifiedDate DESC LIMIT 50" } }, "response": { "transform": "records" } } }, { "id": "list_opportunities", "name": "List Opportunities", "description": "List sales opportunities from your Salesforce CRM", "requiresWrite": false, "endpoint": { "method": "GET", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/query", "params": { "q": { "type": "string", "in": "query", "description": "SOQL query for opportunities", "default": "SELECT Id, Name, StageName, Amount, CloseDate, AccountId FROM Opportunity ORDER BY CloseDate DESC LIMIT 50" } }, "response": { "transform": "records" } } }, { "id": "create_lead", "name": "Create Lead", "description": "Create a new lead in Salesforce CRM", "requiresWrite": true, "endpoint": { "method": "POST", "url": "{{oauth.raw.instance_url}}/services/data/v61.0/sobjects/Lead", "body": { "LastName": { "type": "string", "description": "Lead last name", "required": true }, "Company": { "type": "string", "description": "Lead company", "required": true }, "FirstName": { "type": "string", "description": "Lead first name" }, "Email": { "type": "string", "description": "Lead email address" }, "Phone": { "type": "string", "description": "Lead phone number" }, "Status": { "type": "string", "description": "Lead status" } } } }], "prompts": [{ "id": "find_accounts", "title": "Find accounts", "prompt": "Search for accounts in my Salesforce CRM and show me their key information.", "category": "crm", "icon": "search" }, { "id": "create_lead", "title": "Create a lead", "prompt": "Create a new lead in Salesforce CRM with the information I provide.", "category": "crm", "icon": "plus" }, { "id": "pipeline_summary", "title": "Pipeline summary", "prompt": "Show me a summary of my current sales opportunities and pipeline status.", "category": "crm", "icon": "chart" }, { "id": "contact_lookup", "title": "Contact lookup", "prompt": "Find and display information about specific contacts in my Salesforce CRM.", "category": "crm", "icon": "user" }], "suggestedWith": ["gmail", "slack", "calendar"] },
|
|
24
|
-
{ "name": "sentry", "displayName": "Sentry", "icon": "sentry.svg", "description": "Monitor errors, track issues, and manage Sentry projects", "auth": { "type": "
|
|
24
|
+
{ "name": "sentry", "displayName": "Sentry", "icon": "sentry.svg", "description": "Monitor errors, track issues, and manage Sentry projects", "auth": { "type": "oauth2", "provider": "sentry", "authorizationUrl": "https://sentry.io/oauth/authorize/", "tokenUrl": "https://sentry.io/oauth/token/", "scopes": ["org:read", "project:read", "event:read", "event:write"], "tokenAuthMethod": "none", "pkce": true, "supportsRefreshToken": true, "requiredApis": [{ "name": "Sentry OAuth Application", "enableUrl": "https://sentry.io/settings/account/api/applications/" }] }, "envVars": [{ "name": "SENTRY_CLIENT_ID", "description": "Sentry OAuth Client ID from your public OAuth application", "required": true, "sensitive": false, "docsUrl": "https://docs.sentry.io/api/auth/" }, { "name": "SENTRY_ORG", "description": "Default Sentry organization slug for prompts that do not specify one", "required": false, "sensitive": false, "docsUrl": "https://docs.sentry.io/api/organizations/" }], "tools": [{ "id": "list_organizations", "name": "List Organizations", "description": "List Sentry organizations available to the authenticated user so agents can discover organization slugs before project or issue calls", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/organizations/", "params": { "owner": { "type": "boolean", "in": "query", "description": "Restrict results to organizations where the authenticated user is an owner" }, "query": { "type": "string", "in": "query", "description": "Filter organizations by name, slug, status, id, email, or member id" }, "cursor": { "type": "string", "in": "query", "description": "Pagination cursor" } } } }, { "id": "list_projects", "name": "List Projects", "description": "List Sentry projects for an organization", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/organizations/{organizationSlug}/projects/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "cursor": { "type": "string", "in": "query", "description": "Pagination cursor" } } } }, { "id": "list_issues", "name": "List Issues", "description": "List Sentry issues for a project", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/projects/{organizationSlug}/{projectSlug}/issues/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "projectSlug": { "type": "string", "in": "path", "description": "Sentry project slug", "required": true }, "query": { "type": "string", "in": "query", "description": "Sentry issue search query, for example is:unresolved" }, "statsPeriod": { "type": "string", "in": "query", "description": "Stats period, for example 24h, 14d, or 30d" }, "limit": { "type": "number", "in": "query", "description": "Maximum number of issues to return" }, "cursor": { "type": "string", "in": "query", "description": "Pagination cursor" } } } }, { "id": "get_issue", "name": "Get Issue", "description": "Get details for a Sentry issue", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sentry.io/api/0/organizations/{organizationSlug}/issues/{issueId}/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "issueId": { "type": "string", "in": "path", "description": "Sentry issue ID", "required": true }, "collapse": { "type": "string[]", "in": "query", "description": "Optional response sections to collapse" } } } }, { "id": "resolve_issue", "name": "Resolve Issue", "description": "Resolve a Sentry issue", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://sentry.io/api/0/organizations/{organizationSlug}/issues/{issueId}/", "params": { "organizationSlug": { "type": "string", "in": "path", "description": "Sentry organization slug", "required": true }, "issueId": { "type": "string", "in": "path", "description": "Sentry issue ID", "required": true } }, "body": { "status": { "type": "string", "description": "New issue status", "default": "resolved" }, "statusDetails": { "type": "object", "description": "Optional Sentry status details" } } } }], "prompts": [{ "id": "check_errors", "title": "Check recent errors", "prompt": "Show me recent errors and issues in my Sentry projects and help me prioritize which ones to fix.", "category": "development", "icon": "alert-triangle" }, { "id": "analyze_issue", "title": "Analyze an issue", "prompt": "Help me analyze a specific Sentry issue, understand its root cause, and suggest a fix.", "category": "development", "icon": "bug" }, { "id": "project_health", "title": "Project health check", "prompt": "Give me an overview of the health of my Sentry projects, including error rates and trending issues.", "category": "analytics", "icon": "activity" }], "suggestedWith": ["github", "slack", "linear"], "category": "development" },
|
|
25
25
|
{ "name": "servicenow", "displayName": "ServiceNow", "icon": "servicenow.svg", "description": "IT Service Management - incidents, changes, and service requests", "auth": { "type": "oauth2", "provider": "servicenow", "scopes": ["useraccount", "openid"] }, "envVars": [{ "name": "SERVICENOW_INSTANCE", "description": "ServiceNow instance URL (e.g. your-instance.service-now.com)", "required": true }, { "name": "SERVICENOW_CLIENT_ID", "description": "ServiceNow OAuth Client ID", "required": true }, { "name": "SERVICENOW_CLIENT_SECRET", "description": "ServiceNow OAuth Client Secret", "required": true, "sensitive": true }], "tools": [{ "id": "list_incidents", "name": "List Incidents", "description": "List ServiceNow incidents with optional filters" }, { "id": "get_incident", "name": "Get Incident", "description": "Get details of a specific incident" }, { "id": "create_incident", "name": "Create Incident", "description": "Create a new incident in ServiceNow" }, { "id": "update_incident", "name": "Update Incident", "description": "Update an existing incident" }, { "id": "search_knowledge", "name": "Search Knowledge Base", "description": "Search ServiceNow knowledge base articles" }], "prompts": [{ "id": "check_ticket_status", "title": "Check ticket status", "prompt": "Check the status of my recent ServiceNow incidents and summarize any that need attention.", "category": "productivity" }, { "id": "create_incident_report", "title": "Create incident", "prompt": "Help me create a new incident in ServiceNow with the appropriate priority and category.", "category": "productivity" }, { "id": "search_kb", "title": "Search knowledge base", "prompt": "Search the ServiceNow knowledge base for solutions to common issues.", "category": "research" }], "suggestedWith": ["slack", "jira"], "category": "enterprise" },
|
|
26
26
|
{ "name": "sharepoint", "displayName": "SharePoint", "icon": "sharepoint.svg", "description": "Access and manage SharePoint sites, document libraries, and files", "auth": { "type": "oauth2", "provider": "microsoft", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token", "scopes": ["Sites.Read.All", "Sites.ReadWrite.All", "Files.Read.All", "Files.ReadWrite.All", "offline_access"], "tokenAuthMethod": "body", "requiredApis": [{ "name": "Microsoft Graph API", "enableUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }] }, "envVars": [{ "name": "MICROSOFT_CLIENT_ID", "description": "Microsoft Azure App Client ID (shared with Outlook/Teams)", "required": true, "sensitive": false, "docsUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }, { "name": "MICROSOFT_CLIENT_SECRET", "description": "Microsoft Azure App Client Secret", "required": true, "sensitive": true, "docsUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade" }], "tools": [{ "id": "list_sites", "name": "List SharePoint Sites", "description": "List all SharePoint sites the user has access to", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/sites", "params": { "search": { "type": "string", "in": "query", "description": "Search term for SharePoint sites", "default": "*" }, "$top": { "type": "number", "in": "query", "description": "Maximum number of sites to return", "default": 200 } }, "response": { "transform": "value" } } }, { "id": "get_site", "name": "Get Site Details", "description": "Get detailed information about a specific SharePoint site", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/sites/{siteId}", "params": { "siteId": { "type": "string", "in": "path", "description": "SharePoint site ID", "required": true } } } }, { "id": "list_files", "name": "List Files", "description": "List files and folders in a SharePoint document library", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/sites/{siteId}/drive/root/children", "params": { "siteId": { "type": "string", "in": "path", "description": "SharePoint site ID", "required": true }, "$top": { "type": "number", "in": "query", "description": "Maximum number of items to return", "default": 200 } } } }, { "id": "get_file", "name": "Get File", "description": "Get file metadata and content from SharePoint", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://graph.microsoft.com/v1.0/sites/{siteId}/drive/items/{itemId}", "params": { "siteId": { "type": "string", "in": "path", "description": "SharePoint site ID", "required": true }, "itemId": { "type": "string", "in": "path", "description": "Drive item ID", "required": true } } } }, { "id": "upload_file", "name": "Upload File", "description": "Upload a file to a SharePoint document library", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://graph.microsoft.com/v1.0/sites/{siteId}/drive/items/{parentFolderId}:/{fileName}:/content", "params": { "siteId": { "type": "string", "in": "path", "description": "SharePoint site ID", "required": true }, "parentFolderId": { "type": "string", "in": "path", "description": "Parent folder item ID, or root", "default": "root" }, "fileName": { "type": "string", "in": "path", "description": "Name of the file to upload", "required": true } }, "body": { "content": { "type": "string", "description": "File content to upload", "required": true } }, "contentType": "application/octet-stream" } }], "prompts": [{ "id": "search_documents", "title": "Search documents", "prompt": "Search for documents in SharePoint sites and summarize their content.", "category": "productivity", "icon": "search" }, { "id": "list_recent_files", "title": "List recent files", "prompt": "Show me the most recently modified files across all SharePoint sites I have access to.", "category": "productivity", "icon": "document" }, { "id": "organize_documents", "title": "Organize documents", "prompt": "Help me organize and categorize documents in a SharePoint library.", "category": "productivity", "icon": "folder" }], "suggestedWith": ["outlook", "teams", "onedrive"] },
|
|
27
27
|
{ "name": "sheets", "displayName": "Google Sheets", "icon": "sheets.svg", "description": "Read, write, and manage Google Sheets spreadsheets", "auth": { "type": "oauth2", "provider": "google", "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth", "tokenUrl": "https://oauth2.googleapis.com/token", "scopes": ["https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/drive.file"], "requiredApis": [{ "name": "Google Sheets API", "enableUrl": "https://console.cloud.google.com/apis/library/sheets.googleapis.com" }, { "name": "Google Drive API", "enableUrl": "https://console.cloud.google.com/apis/library/drive.googleapis.com" }] }, "envVars": [{ "name": "GOOGLE_CLIENT_ID", "description": "Google OAuth Client ID", "required": true, "sensitive": false, "docsUrl": "https://console.cloud.google.com/apis/credentials" }, { "name": "GOOGLE_CLIENT_SECRET", "description": "Google OAuth Client Secret", "required": true, "sensitive": true, "docsUrl": "https://console.cloud.google.com/apis/credentials" }], "tools": [{ "id": "list_spreadsheets", "name": "List Spreadsheets", "description": "List recent Google Sheets spreadsheets from Drive", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://www.googleapis.com/drive/v3/files", "params": { "q": { "type": "string", "in": "query", "description": "Drive query limited to Google Sheets spreadsheets", "default": "mimeType='application/vnd.google-apps.spreadsheet' and trashed=false" }, "pageSize": { "type": "number", "in": "query", "description": "Maximum number of spreadsheets to return", "default": 100 }, "pageToken": { "type": "string", "in": "query", "description": "Pagination token" }, "fields": { "type": "string", "in": "query", "description": "Partial response field selector", "default": "nextPageToken, files(id, name, webViewLink, modifiedTime)" } }, "response": { "transform": "files" } } }, { "id": "get_spreadsheet", "name": "Get Spreadsheet", "description": "Get spreadsheet metadata including sheet names and properties", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true }, "includeGridData": { "type": "boolean", "in": "query", "description": "Whether to include grid data", "default": false }, "ranges": { "type": "string[]", "in": "query", "description": "Ranges to include when includeGridData is true" } } } }, { "id": "read_range", "name": "Read Range", "description": "Read cell data from a spreadsheet range", "requiresWrite": false, "endpoint": { "method": "GET", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true }, "range": { "type": "string", "in": "path", "description": "A1 notation range to read", "required": true }, "majorDimension": { "type": "string", "in": "query", "description": "Major dimension for returned values" }, "valueRenderOption": { "type": "string", "in": "query", "description": "How values should be rendered" } } } }, { "id": "write_range", "name": "Write Range", "description": "Write data to a spreadsheet range", "requiresWrite": true, "endpoint": { "method": "PUT", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true }, "range": { "type": "string", "in": "path", "description": "A1 notation range to write", "required": true }, "valueInputOption": { "type": "string", "in": "query", "description": "How input values should be interpreted", "default": "USER_ENTERED" }, "includeValuesInResponse": { "type": "boolean", "in": "query", "description": "Whether the response should include written values", "default": false } }, "body": { "values": { "type": "array", "description": "2D array of row values to write", "required": true }, "majorDimension": { "type": "string", "description": "Major dimension of provided values", "default": "ROWS" } } } }, { "id": "create_spreadsheet", "name": "Create Spreadsheet", "description": "Create a new spreadsheet with optional initial data", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets", "body": { "properties": { "type": "object", "description": "Spreadsheet properties such as title", "required": true }, "sheets": { "type": "array", "description": "Optional initial sheet definitions" } } } }, { "id": "append_rows", "name": "Append Rows", "description": "Append rows to a spreadsheet range", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}:append", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true }, "range": { "type": "string", "in": "path", "description": "A1 notation range/table to append to", "required": true }, "valueInputOption": { "type": "string", "in": "query", "description": "How input values should be interpreted", "default": "USER_ENTERED" }, "insertDataOption": { "type": "string", "in": "query", "description": "How inserted data should be handled", "default": "INSERT_ROWS" }, "includeValuesInResponse": { "type": "boolean", "in": "query", "description": "Whether the response should include appended values", "default": false } }, "body": { "values": { "type": "array", "description": "2D array of row values to append", "required": true }, "majorDimension": { "type": "string", "description": "Major dimension of provided values", "default": "ROWS" } } } }, { "id": "clear_range", "name": "Clear Range", "description": "Clear values from a spreadsheet range", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}:clear", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true }, "range": { "type": "string", "in": "path", "description": "A1 notation range to clear", "required": true } }, "body": {} } }, { "id": "batch_update", "name": "Batch Update", "description": "Run raw Google Sheets batchUpdate requests for formatting and structural changes", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true } }, "body": { "requests": { "type": "array", "description": "Google Sheets API batchUpdate request objects", "required": true }, "includeSpreadsheetInResponse": { "type": "boolean", "description": "Whether to include the updated spreadsheet in the response" } } } }, { "id": "add_sheet", "name": "Add Sheet", "description": "Add a new sheet/tab to a spreadsheet", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true } }, "body": { "requests": { "type": "array", "description": "A batchUpdate requests array containing an addSheet request", "required": true } } } }, { "id": "delete_sheet", "name": "Delete Sheet", "description": "Delete a sheet/tab from a spreadsheet by sheet ID", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true } }, "body": { "requests": { "type": "array", "description": "A batchUpdate requests array containing a deleteSheet request", "required": true } } } }, { "id": "rename_sheet", "name": "Rename Sheet", "description": "Rename a sheet/tab by sheet ID", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true } }, "body": { "requests": { "type": "array", "description": "A batchUpdate requests array containing an updateSheetProperties request", "required": true } } } }, { "id": "delete_spreadsheet", "name": "Delete Spreadsheet", "description": "Move an app-accessible spreadsheet file to trash", "requiresWrite": true, "endpoint": { "method": "PATCH", "url": "https://www.googleapis.com/drive/v3/files/{spreadsheetId}", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID / Drive file ID", "required": true } }, "body": { "trashed": { "type": "boolean", "description": "Whether to move the spreadsheet file to trash", "default": true } } } }, { "id": "find_replace", "name": "Find and Replace", "description": "Find and replace text in a spreadsheet or sheet", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true } }, "body": { "requests": { "type": "array", "description": "A batchUpdate requests array containing a findReplace request", "required": true } } } }, { "id": "copy_sheet", "name": "Copy Sheet", "description": "Copy a sheet/tab to another spreadsheet", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/sheets/{sheetId}:copyTo", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Source spreadsheet ID", "required": true }, "sheetId": { "type": "number", "in": "path", "description": "Source sheet ID", "required": true } }, "body": { "destinationSpreadsheetId": { "type": "string", "description": "Destination spreadsheet ID", "required": true } } } }, { "id": "create_chart", "name": "Create Chart", "description": "Create an embedded chart using a Sheets API chart specification", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true } }, "body": { "requests": { "type": "array", "description": "A batchUpdate requests array containing an addChart request", "required": true } } } }, { "id": "set_data_validation", "name": "Set Data Validation", "description": "Set data validation rules on a sheet range", "requiresWrite": true, "endpoint": { "method": "POST", "url": "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", "params": { "spreadsheetId": { "type": "string", "in": "path", "description": "Google Sheets spreadsheet ID", "required": true } }, "body": { "requests": { "type": "array", "description": "A batchUpdate requests array containing a setDataValidation request", "required": true } } } }], "prompts": [{ "id": "analyze_data", "title": "Analyze spreadsheet data", "prompt": "Read and analyze data from a Google Sheets spreadsheet. Provide insights, trends, and statistics.", "category": "productivity", "icon": "chart" }, { "id": "create_report", "title": "Create a report spreadsheet", "prompt": "Create a new Google Sheets spreadsheet with formatted data, headers, and calculations.", "category": "productivity", "icon": "plus" }, { "id": "update_tracker", "title": "Update a tracker", "prompt": "Update a tracking spreadsheet with new data. Add rows, update values, or calculate totals.", "category": "productivity", "icon": "edit" }], "suggestedWith": ["gmail", "calendar", "notion"] },
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const EXPERIMENTAL_INTEGRATIONS_ENV = "VERYFRONT_EXPERIMENTAL_INTEGRATIONS";
|
|
2
|
+
export declare const SUPPORTED_INTEGRATION_NAMES: readonly ["airtable", "asana", "calendar", "confluence", "docs-google", "drive", "figma", "github", "gitlab", "gmail", "jira", "linear", "notion", "onedrive", "outlook", "sentry", "sharepoint", "sheets", "slack", "teams"];
|
|
3
|
+
export declare const DECLARED_INTEGRATION_NAMES: readonly ["gmail", "slack", "github", "calendar", "jira", "notion", "servicenow", "confluence", "linear", "gitlab", "outlook", "teams", "figma", "sheets", "airtable", "supabase", "neon", "sharepoint", "stripe", "salesforce", "twitter", "onedrive", "bitbucket", "sentry", "posthog", "zendesk", "asana", "monday", "zoom", "trello", "box", "shopify", "clickup", "intercom", "pipedrive", "mailchimp", "webex", "freshdesk", "quickbooks", "xero", "drive", "docs-google", "snowflake", "mixpanel", "twilio", "anthropic", "aws", "hubspot"];
|
|
4
|
+
export declare function isDeclaredIntegration(name: string | null | undefined): boolean;
|
|
5
|
+
export declare function isSupportedIntegration(name: string | null | undefined): boolean;
|
|
6
|
+
export declare function isExperimentalIntegrationEnabled(name: string | null | undefined): boolean;
|
|
7
|
+
export declare function isVisibleIntegration(name: string | null | undefined): boolean;
|
|
8
|
+
export declare function filterVisibleIntegrations<T extends {
|
|
9
|
+
id?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
}>(integrations: readonly T[]): T[];
|
|
12
|
+
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/feature-flags.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AAEnF,eAAO,MAAM,2BAA2B,+NAqB9B,CAAC;AAEX,eAAO,MAAM,0BAA0B,ohBAiD7B,CAAC;AAqBX,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE9E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE/E;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAezF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE7E;AAED,wBAAgB,yBAAyB,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAChF,YAAY,EAAE,SAAS,CAAC,EAAE,GACzB,CAAC,EAAE,CAIL"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
2
|
+
export const EXPERIMENTAL_INTEGRATIONS_ENV = "VERYFRONT_EXPERIMENTAL_INTEGRATIONS";
|
|
3
|
+
export const SUPPORTED_INTEGRATION_NAMES = [
|
|
4
|
+
"airtable",
|
|
5
|
+
"asana",
|
|
6
|
+
"calendar",
|
|
7
|
+
"confluence",
|
|
8
|
+
"docs-google",
|
|
9
|
+
"drive",
|
|
10
|
+
"figma",
|
|
11
|
+
"github",
|
|
12
|
+
"gitlab",
|
|
13
|
+
"gmail",
|
|
14
|
+
"jira",
|
|
15
|
+
"linear",
|
|
16
|
+
"notion",
|
|
17
|
+
"onedrive",
|
|
18
|
+
"outlook",
|
|
19
|
+
"sentry",
|
|
20
|
+
"sharepoint",
|
|
21
|
+
"sheets",
|
|
22
|
+
"slack",
|
|
23
|
+
"teams",
|
|
24
|
+
];
|
|
25
|
+
export const DECLARED_INTEGRATION_NAMES = [
|
|
26
|
+
"gmail",
|
|
27
|
+
"slack",
|
|
28
|
+
"github",
|
|
29
|
+
"calendar",
|
|
30
|
+
"jira",
|
|
31
|
+
"notion",
|
|
32
|
+
"servicenow",
|
|
33
|
+
"confluence",
|
|
34
|
+
"linear",
|
|
35
|
+
"gitlab",
|
|
36
|
+
"outlook",
|
|
37
|
+
"teams",
|
|
38
|
+
"figma",
|
|
39
|
+
"sheets",
|
|
40
|
+
"airtable",
|
|
41
|
+
"supabase",
|
|
42
|
+
"neon",
|
|
43
|
+
"sharepoint",
|
|
44
|
+
"stripe",
|
|
45
|
+
"salesforce",
|
|
46
|
+
"twitter",
|
|
47
|
+
"onedrive",
|
|
48
|
+
"bitbucket",
|
|
49
|
+
"sentry",
|
|
50
|
+
"posthog",
|
|
51
|
+
"zendesk",
|
|
52
|
+
"asana",
|
|
53
|
+
"monday",
|
|
54
|
+
"zoom",
|
|
55
|
+
"trello",
|
|
56
|
+
"box",
|
|
57
|
+
"shopify",
|
|
58
|
+
"clickup",
|
|
59
|
+
"intercom",
|
|
60
|
+
"pipedrive",
|
|
61
|
+
"mailchimp",
|
|
62
|
+
"webex",
|
|
63
|
+
"freshdesk",
|
|
64
|
+
"quickbooks",
|
|
65
|
+
"xero",
|
|
66
|
+
"drive",
|
|
67
|
+
"docs-google",
|
|
68
|
+
"snowflake",
|
|
69
|
+
"mixpanel",
|
|
70
|
+
"twilio",
|
|
71
|
+
"anthropic",
|
|
72
|
+
"aws",
|
|
73
|
+
"hubspot",
|
|
74
|
+
];
|
|
75
|
+
const supportedIntegrations = new Set(SUPPORTED_INTEGRATION_NAMES);
|
|
76
|
+
const declaredIntegrations = new Set(DECLARED_INTEGRATION_NAMES);
|
|
77
|
+
function normalizeIntegrationName(name) {
|
|
78
|
+
return name.trim().toLowerCase();
|
|
79
|
+
}
|
|
80
|
+
function readEnv(name) {
|
|
81
|
+
try {
|
|
82
|
+
return dntShim.dntGlobalThis.Deno?.env?.get(name);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Deno throws without --allow-env. Treat missing permission like an unset flag.
|
|
86
|
+
}
|
|
87
|
+
const processEnv = dntShim.dntGlobalThis
|
|
88
|
+
.process?.env;
|
|
89
|
+
return processEnv?.[name];
|
|
90
|
+
}
|
|
91
|
+
export function isDeclaredIntegration(name) {
|
|
92
|
+
return typeof name === "string" && declaredIntegrations.has(normalizeIntegrationName(name));
|
|
93
|
+
}
|
|
94
|
+
export function isSupportedIntegration(name) {
|
|
95
|
+
return typeof name === "string" && supportedIntegrations.has(normalizeIntegrationName(name));
|
|
96
|
+
}
|
|
97
|
+
export function isExperimentalIntegrationEnabled(name) {
|
|
98
|
+
if (typeof name !== "string" || !isDeclaredIntegration(name))
|
|
99
|
+
return false;
|
|
100
|
+
const value = readEnv(EXPERIMENTAL_INTEGRATIONS_ENV);
|
|
101
|
+
if (!value)
|
|
102
|
+
return false;
|
|
103
|
+
const normalizedName = normalizeIntegrationName(name);
|
|
104
|
+
const normalizedValue = value.trim().toLowerCase();
|
|
105
|
+
if (["1", "true", "all", "*"].includes(normalizedValue))
|
|
106
|
+
return true;
|
|
107
|
+
return normalizedValue
|
|
108
|
+
.split(",")
|
|
109
|
+
.map((item) => item.trim())
|
|
110
|
+
.filter(Boolean)
|
|
111
|
+
.includes(normalizedName);
|
|
112
|
+
}
|
|
113
|
+
export function isVisibleIntegration(name) {
|
|
114
|
+
return isSupportedIntegration(name) || isExperimentalIntegrationEnabled(name);
|
|
115
|
+
}
|
|
116
|
+
export function filterVisibleIntegrations(integrations) {
|
|
117
|
+
return integrations.filter((integration) => isVisibleIntegration(integration.id ?? integration.name));
|
|
118
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAItE,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAG1F;AAED,uBAAuB;AACvB,wBAAgB,cAAc,IAAI,SAAS,iBAAiB,EAAE,CAE7D;AAED,8BAA8B;AAC9B,wBAAgB,iBAAiB,IAAI,SAAS,MAAM,EAAE,CAErD;AAED,mBAAmB;AACnB,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAGD,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
|
@@ -20,23 +20,26 @@
|
|
|
20
20
|
import "../../_dnt.polyfills.js";
|
|
21
21
|
export { EnvVarSchema, IntegrationConfigSchema, IntegrationNameSchema, IntegrationPromptSchema, IntegrationToolSchema, OAuthConfigSchema, OAuthFieldSchema, } from "./schema.js";
|
|
22
22
|
import { connectors, icons } from "./_data.js";
|
|
23
|
-
|
|
23
|
+
import { filterVisibleIntegrations, isVisibleIntegration } from "./feature-flags.js";
|
|
24
24
|
const iconMap = new Map(Object.entries(icons));
|
|
25
|
-
const connectorNames = connectors.map((c) => c.name);
|
|
26
25
|
/** Return connector. */
|
|
27
26
|
export function getConnector(name) {
|
|
28
|
-
|
|
27
|
+
if (!isVisibleIntegration(name))
|
|
28
|
+
return undefined;
|
|
29
|
+
return connectors.find((connector) => connector.name === name);
|
|
29
30
|
}
|
|
30
31
|
/** List connectors. */
|
|
31
32
|
export function listConnectors() {
|
|
32
|
-
return connectors;
|
|
33
|
+
return filterVisibleIntegrations(connectors);
|
|
33
34
|
}
|
|
34
35
|
/** Return connector names. */
|
|
35
36
|
export function getConnectorNames() {
|
|
36
|
-
return
|
|
37
|
+
return listConnectors().map((connector) => connector.name);
|
|
37
38
|
}
|
|
38
39
|
/** Return icon. */
|
|
39
40
|
export function getIcon(name) {
|
|
41
|
+
if (!isVisibleIntegration(name))
|
|
42
|
+
return undefined;
|
|
40
43
|
return iconMap.get(name);
|
|
41
44
|
}
|
|
42
45
|
// Remote integration tool helpers (per-request, no global registration)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { InferSchema } from "../extensions/schema/index.js";
|
|
2
|
-
export declare const getIntegrationNameSchema: () => import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "
|
|
2
|
+
export declare const getIntegrationNameSchema: () => import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
|
|
3
3
|
/** Zod schema for integration name. */
|
|
4
|
-
export declare const IntegrationNameSchema: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "
|
|
4
|
+
export declare const IntegrationNameSchema: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
|
|
5
5
|
export declare const getEnvVarSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
6
6
|
name: import("../internal-agents/schema.js").Schema<string>;
|
|
7
7
|
description: import("../internal-agents/schema.js").Schema<string>;
|
|
@@ -258,7 +258,7 @@ export declare const IntegrationPromptSchema: import("../internal-agents/schema.
|
|
|
258
258
|
icon: import("../internal-agents/schema.js").Schema<string | undefined>;
|
|
259
259
|
}>>;
|
|
260
260
|
export declare const getIntegrationConfigSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
261
|
-
name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "
|
|
261
|
+
name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
|
|
262
262
|
displayName: import("../internal-agents/schema.js").Schema<string>;
|
|
263
263
|
icon: import("../internal-agents/schema.js").Schema<string | undefined>;
|
|
264
264
|
description: import("../internal-agents/schema.js").Schema<string>;
|
|
@@ -357,7 +357,7 @@ export declare const getIntegrationConfigSchema: () => import("../internal-agent
|
|
|
357
357
|
}>>;
|
|
358
358
|
/** Zod schema for integration config. */
|
|
359
359
|
export declare const IntegrationConfigSchema: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
360
|
-
name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "
|
|
360
|
+
name: import("../internal-agents/schema.js").Schema<"github" | "twitter" | "anthropic" | "zoom" | "linear" | "slack" | "gmail" | "calendar" | "sheets" | "drive" | "outlook" | "teams" | "sharepoint" | "onedrive" | "jira" | "confluence" | "bitbucket" | "airtable" | "asana" | "docs-google" | "figma" | "gitlab" | "notion" | "sentry" | "servicenow" | "supabase" | "neon" | "stripe" | "salesforce" | "posthog" | "zendesk" | "monday" | "trello" | "box" | "shopify" | "clickup" | "intercom" | "pipedrive" | "mailchimp" | "webex" | "freshdesk" | "quickbooks" | "xero" | "snowflake" | "mixpanel" | "twilio" | "aws">;
|
|
361
361
|
displayName: import("../internal-agents/schema.js").Schema<string>;
|
|
362
362
|
icon: import("../internal-agents/schema.js").Schema<string | undefined>;
|
|
363
363
|
description: import("../internal-agents/schema.js").Schema<string>;
|
package/esm/src/oauth/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OAuth 2.0 with
|
|
2
|
+
* OAuth 2.0 with pre-configured providers.
|
|
3
|
+
*
|
|
4
|
+
* Default supported integrations are visible in the CLI/MCP/runtime connector
|
|
5
|
+
* surface. Additional provider configs are retained for feature-gated
|
|
6
|
+
* integrations enabled with VERYFRONT_EXPERIMENTAL_INTEGRATIONS.
|
|
3
7
|
*
|
|
4
8
|
* @example
|
|
5
9
|
* ```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/oauth/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,yBAAyB,CAAC;AAGjC,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAC"}
|
package/esm/src/oauth/index.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OAuth 2.0 with
|
|
2
|
+
* OAuth 2.0 with pre-configured providers.
|
|
3
|
+
*
|
|
4
|
+
* Default supported integrations are visible in the CLI/MCP/runtime connector
|
|
5
|
+
* surface. Additional provider configs are retained for feature-gated
|
|
6
|
+
* integrations enabled with VERYFRONT_EXPERIMENTAL_INTEGRATIONS.
|
|
3
7
|
*
|
|
4
8
|
* @example
|
|
5
9
|
* ```typescript
|
|
@@ -47,8 +47,8 @@ export declare const trelloConfig: OAuthServiceConfig;
|
|
|
47
47
|
export declare const clickupConfig: OAuthServiceConfig;
|
|
48
48
|
/** Configuration used by pipedrive. */
|
|
49
49
|
export declare const pipedriveConfig: OAuthServiceConfig;
|
|
50
|
-
|
|
51
|
-
github: {
|
|
50
|
+
declare const allCommonServices: {
|
|
51
|
+
readonly github: {
|
|
52
52
|
providerId: string;
|
|
53
53
|
displayName: string;
|
|
54
54
|
authorizationUrl: string;
|
|
@@ -73,7 +73,7 @@ export declare const commonServices: {
|
|
|
73
73
|
defaultScopes: string[];
|
|
74
74
|
apiBaseUrl: string;
|
|
75
75
|
};
|
|
76
|
-
slack: {
|
|
76
|
+
readonly slack: {
|
|
77
77
|
providerId: string;
|
|
78
78
|
displayName: string;
|
|
79
79
|
authorizationUrl: string;
|
|
@@ -98,7 +98,7 @@ export declare const commonServices: {
|
|
|
98
98
|
defaultScopes: string[];
|
|
99
99
|
apiBaseUrl: string;
|
|
100
100
|
};
|
|
101
|
-
notion: {
|
|
101
|
+
readonly notion: {
|
|
102
102
|
providerId: string;
|
|
103
103
|
displayName: string;
|
|
104
104
|
authorizationUrl: string;
|
|
@@ -123,7 +123,7 @@ export declare const commonServices: {
|
|
|
123
123
|
defaultScopes: string[];
|
|
124
124
|
apiBaseUrl: string;
|
|
125
125
|
};
|
|
126
|
-
figma: {
|
|
126
|
+
readonly figma: {
|
|
127
127
|
providerId: string;
|
|
128
128
|
displayName: string;
|
|
129
129
|
authorizationUrl: string;
|
|
@@ -148,7 +148,7 @@ export declare const commonServices: {
|
|
|
148
148
|
defaultScopes: string[];
|
|
149
149
|
apiBaseUrl: string;
|
|
150
150
|
};
|
|
151
|
-
linear: {
|
|
151
|
+
readonly linear: {
|
|
152
152
|
providerId: string;
|
|
153
153
|
displayName: string;
|
|
154
154
|
authorizationUrl: string;
|
|
@@ -173,7 +173,7 @@ export declare const commonServices: {
|
|
|
173
173
|
defaultScopes: string[];
|
|
174
174
|
apiBaseUrl: string;
|
|
175
175
|
};
|
|
176
|
-
gitlab: {
|
|
176
|
+
readonly gitlab: {
|
|
177
177
|
providerId: string;
|
|
178
178
|
displayName: string;
|
|
179
179
|
authorizationUrl: string;
|
|
@@ -198,7 +198,7 @@ export declare const commonServices: {
|
|
|
198
198
|
defaultScopes: string[];
|
|
199
199
|
apiBaseUrl: string;
|
|
200
200
|
};
|
|
201
|
-
airtable: {
|
|
201
|
+
readonly airtable: {
|
|
202
202
|
providerId: string;
|
|
203
203
|
displayName: string;
|
|
204
204
|
authorizationUrl: string;
|
|
@@ -223,7 +223,7 @@ export declare const commonServices: {
|
|
|
223
223
|
defaultScopes: string[];
|
|
224
224
|
apiBaseUrl: string;
|
|
225
225
|
};
|
|
226
|
-
hubspot: {
|
|
226
|
+
readonly hubspot: {
|
|
227
227
|
providerId: string;
|
|
228
228
|
displayName: string;
|
|
229
229
|
authorizationUrl: string;
|
|
@@ -248,7 +248,7 @@ export declare const commonServices: {
|
|
|
248
248
|
defaultScopes: string[];
|
|
249
249
|
apiBaseUrl: string;
|
|
250
250
|
};
|
|
251
|
-
salesforce: {
|
|
251
|
+
readonly salesforce: {
|
|
252
252
|
providerId: string;
|
|
253
253
|
displayName: string;
|
|
254
254
|
authorizationUrl: string;
|
|
@@ -273,7 +273,7 @@ export declare const commonServices: {
|
|
|
273
273
|
defaultScopes: string[];
|
|
274
274
|
apiBaseUrl: string;
|
|
275
275
|
};
|
|
276
|
-
twitter: {
|
|
276
|
+
readonly twitter: {
|
|
277
277
|
providerId: string;
|
|
278
278
|
displayName: string;
|
|
279
279
|
authorizationUrl: string;
|
|
@@ -298,7 +298,7 @@ export declare const commonServices: {
|
|
|
298
298
|
defaultScopes: string[];
|
|
299
299
|
apiBaseUrl: string;
|
|
300
300
|
};
|
|
301
|
-
asana: {
|
|
301
|
+
readonly asana: {
|
|
302
302
|
providerId: string;
|
|
303
303
|
displayName: string;
|
|
304
304
|
authorizationUrl: string;
|
|
@@ -323,7 +323,7 @@ export declare const commonServices: {
|
|
|
323
323
|
defaultScopes: string[];
|
|
324
324
|
apiBaseUrl: string;
|
|
325
325
|
};
|
|
326
|
-
monday: {
|
|
326
|
+
readonly monday: {
|
|
327
327
|
providerId: string;
|
|
328
328
|
displayName: string;
|
|
329
329
|
authorizationUrl: string;
|
|
@@ -348,7 +348,7 @@ export declare const commonServices: {
|
|
|
348
348
|
defaultScopes: string[];
|
|
349
349
|
apiBaseUrl: string;
|
|
350
350
|
};
|
|
351
|
-
zoom: {
|
|
351
|
+
readonly zoom: {
|
|
352
352
|
providerId: string;
|
|
353
353
|
displayName: string;
|
|
354
354
|
authorizationUrl: string;
|
|
@@ -373,7 +373,7 @@ export declare const commonServices: {
|
|
|
373
373
|
defaultScopes: string[];
|
|
374
374
|
apiBaseUrl: string;
|
|
375
375
|
};
|
|
376
|
-
intercom: {
|
|
376
|
+
readonly intercom: {
|
|
377
377
|
providerId: string;
|
|
378
378
|
displayName: string;
|
|
379
379
|
authorizationUrl: string;
|
|
@@ -398,7 +398,7 @@ export declare const commonServices: {
|
|
|
398
398
|
defaultScopes: string[];
|
|
399
399
|
apiBaseUrl: string;
|
|
400
400
|
};
|
|
401
|
-
freshdesk: {
|
|
401
|
+
readonly freshdesk: {
|
|
402
402
|
providerId: string;
|
|
403
403
|
displayName: string;
|
|
404
404
|
authorizationUrl: string;
|
|
@@ -423,7 +423,7 @@ export declare const commonServices: {
|
|
|
423
423
|
defaultScopes: string[];
|
|
424
424
|
apiBaseUrl: string;
|
|
425
425
|
};
|
|
426
|
-
mailchimp: {
|
|
426
|
+
readonly mailchimp: {
|
|
427
427
|
providerId: string;
|
|
428
428
|
displayName: string;
|
|
429
429
|
authorizationUrl: string;
|
|
@@ -448,7 +448,7 @@ export declare const commonServices: {
|
|
|
448
448
|
defaultScopes: string[];
|
|
449
449
|
apiBaseUrl: string;
|
|
450
450
|
};
|
|
451
|
-
shopify: {
|
|
451
|
+
readonly shopify: {
|
|
452
452
|
providerId: string;
|
|
453
453
|
displayName: string;
|
|
454
454
|
authorizationUrl: string;
|
|
@@ -473,7 +473,7 @@ export declare const commonServices: {
|
|
|
473
473
|
defaultScopes: string[];
|
|
474
474
|
apiBaseUrl: string;
|
|
475
475
|
};
|
|
476
|
-
quickbooks: {
|
|
476
|
+
readonly quickbooks: {
|
|
477
477
|
providerId: string;
|
|
478
478
|
displayName: string;
|
|
479
479
|
authorizationUrl: string;
|
|
@@ -498,7 +498,7 @@ export declare const commonServices: {
|
|
|
498
498
|
defaultScopes: string[];
|
|
499
499
|
apiBaseUrl: string;
|
|
500
500
|
};
|
|
501
|
-
xero: {
|
|
501
|
+
readonly xero: {
|
|
502
502
|
providerId: string;
|
|
503
503
|
displayName: string;
|
|
504
504
|
authorizationUrl: string;
|
|
@@ -523,7 +523,7 @@ export declare const commonServices: {
|
|
|
523
523
|
defaultScopes: string[];
|
|
524
524
|
apiBaseUrl: string;
|
|
525
525
|
};
|
|
526
|
-
box: {
|
|
526
|
+
readonly box: {
|
|
527
527
|
providerId: string;
|
|
528
528
|
displayName: string;
|
|
529
529
|
authorizationUrl: string;
|
|
@@ -548,7 +548,7 @@ export declare const commonServices: {
|
|
|
548
548
|
defaultScopes: string[];
|
|
549
549
|
apiBaseUrl: string;
|
|
550
550
|
};
|
|
551
|
-
webex: {
|
|
551
|
+
readonly webex: {
|
|
552
552
|
providerId: string;
|
|
553
553
|
displayName: string;
|
|
554
554
|
authorizationUrl: string;
|
|
@@ -573,7 +573,7 @@ export declare const commonServices: {
|
|
|
573
573
|
defaultScopes: string[];
|
|
574
574
|
apiBaseUrl: string;
|
|
575
575
|
};
|
|
576
|
-
trello: {
|
|
576
|
+
readonly trello: {
|
|
577
577
|
providerId: string;
|
|
578
578
|
displayName: string;
|
|
579
579
|
authorizationUrl: string;
|
|
@@ -598,7 +598,7 @@ export declare const commonServices: {
|
|
|
598
598
|
defaultScopes: string[];
|
|
599
599
|
apiBaseUrl: string;
|
|
600
600
|
};
|
|
601
|
-
clickup: {
|
|
601
|
+
readonly clickup: {
|
|
602
602
|
providerId: string;
|
|
603
603
|
displayName: string;
|
|
604
604
|
authorizationUrl: string;
|
|
@@ -623,7 +623,7 @@ export declare const commonServices: {
|
|
|
623
623
|
defaultScopes: string[];
|
|
624
624
|
apiBaseUrl: string;
|
|
625
625
|
};
|
|
626
|
-
pipedrive: {
|
|
626
|
+
readonly pipedrive: {
|
|
627
627
|
providerId: string;
|
|
628
628
|
displayName: string;
|
|
629
629
|
authorizationUrl: string;
|
|
@@ -649,4 +649,6 @@ export declare const commonServices: {
|
|
|
649
649
|
apiBaseUrl: string;
|
|
650
650
|
};
|
|
651
651
|
};
|
|
652
|
+
export declare const commonServices: Partial<typeof allCommonServices>;
|
|
653
|
+
export {};
|
|
652
654
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/src/oauth/providers/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/src/oauth/providers/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE,kBAU1B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,WAAW,EAAE,kBAqBzB,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE,kBAc1B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,WAAW,EAAE,kBAUzB,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE,kBAU1B,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE,kBAU1B,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,cAAc,EAAE,kBAgB5B,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,kBAU3B,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,EAAE,kBAU9B,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,kBAW3B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,WAAW,EAAE,kBAUzB,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE,kBAU1B,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,UAAU,EAAE,kBAWxB,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,cAAc,EAAE,kBAU5B,CAAC;AAEF,uCAAuC;AACvC,eAAO,MAAM,eAAe,EAAE,kBAU7B,CAAC;AAEF,uCAAuC;AACvC,eAAO,MAAM,eAAe,EAAE,kBAU7B,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,kBAU3B,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,EAAE,kBAU9B,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,UAAU,EAAE,kBAgBxB,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,SAAS,EAAE,kBAUvB,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,WAAW,EAAE,kBAUzB,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE,kBAa1B,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,kBAU3B,CAAC;AAEF,uCAAuC;AACvC,eAAO,MAAM,eAAe,EAAE,kBAU7B,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBb,CAAC;AAEX,eAAO,MAAM,cAAc,EAEtB,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isVisibleIntegration } from "../../integrations/feature-flags.js";
|
|
1
2
|
/** Configuration used by github. */
|
|
2
3
|
export const githubConfig = {
|
|
3
4
|
providerId: "github",
|
|
@@ -318,7 +319,7 @@ export const pipedriveConfig = {
|
|
|
318
319
|
apiBaseUrl: "https://api.pipedrive.com/v1",
|
|
319
320
|
defaultScopes: [],
|
|
320
321
|
};
|
|
321
|
-
|
|
322
|
+
const allCommonServices = {
|
|
322
323
|
github: githubConfig,
|
|
323
324
|
slack: slackConfig,
|
|
324
325
|
notion: notionConfig,
|
|
@@ -344,3 +345,4 @@ export const commonServices = {
|
|
|
344
345
|
clickup: clickupConfig,
|
|
345
346
|
pipedrive: pipedriveConfig,
|
|
346
347
|
};
|
|
348
|
+
export const commonServices = Object.fromEntries(Object.entries(allCommonServices).filter(([name]) => isVisibleIntegration(name)));
|